import gcc-toolset-12-gcc-12.1.1-3.2.el9
This commit is contained in:
commit
91b67fcdfe
8
.gcc-toolset-12-gcc.metadata
Normal file
8
.gcc-toolset-12-gcc.metadata
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
7f4348418dc3efefd357b32a2b5c8010211ab284 SOURCES/doxygen-1.8.0.src.tar.gz
|
||||||
|
b745356ea1afec83ef254a5b1ce8bdf9e4eb69c8 SOURCES/gcc-12.1.1-20220628.tar.xz
|
||||||
|
db38c7b67f8eea9f2e5b8a48d219165b2fdab11f SOURCES/gmp-6.1.0.tar.bz2
|
||||||
|
bbffc5a2b05e4f0c97e882f96c448504491dc4ed SOURCES/isl-0.18.tar.bz2
|
||||||
|
b8be66396c726fdc36ebb0f692ed8a8cca3bcc66 SOURCES/mpc-1.0.3.tar.gz
|
||||||
|
e3b0af77f18505184410d621fe0aae179e229dba SOURCES/mpfr-3.1.4.tar.bz2
|
||||||
|
6ec33952e824e837fef0e829c93d39d6a507082f SOURCES/newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz
|
||||||
|
0e0c6f8d68ab0878f02287ac082c1077c831cd81 SOURCES/nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz
|
8
.gitignore
vendored
Normal file
8
.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
SOURCES/doxygen-1.8.0.src.tar.gz
|
||||||
|
SOURCES/gcc-12.1.1-20220628.tar.xz
|
||||||
|
SOURCES/gmp-6.1.0.tar.bz2
|
||||||
|
SOURCES/isl-0.18.tar.bz2
|
||||||
|
SOURCES/mpc-1.0.3.tar.gz
|
||||||
|
SOURCES/mpfr-3.1.4.tar.bz2
|
||||||
|
SOURCES/newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz
|
||||||
|
SOURCES/nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz
|
@ -0,0 +1,85 @@
|
|||||||
|
From 8a7f364afd86a4c4c2c747ae9cb4216fe992acc8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Malcolm <dmalcolm@redhat.com>
|
||||||
|
Date: Wed, 25 Aug 2021 12:36:42 -0400
|
||||||
|
Subject: [PATCH 01/17] basic_string::reserve(n) semantics are not available in
|
||||||
|
DTS
|
||||||
|
|
||||||
|
Various tests were added upstream 2020-08-06 as part of:
|
||||||
|
"libstdc++: Implement P0966 std::string::reserve should not shrink"
|
||||||
|
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=140cf935cd118f7208b7c3826a8b9d50936242f0
|
||||||
|
|
||||||
|
std::string and std::wstring are instantiated in the system libstdc++.so
|
||||||
|
via explicit instantiation definitions, so the new basic_string::reserve(n)
|
||||||
|
semantics are not available in DTS.
|
||||||
|
|
||||||
|
Update/disable the pertinent parts of the tests to reflect the behavior
|
||||||
|
when run against the system libstdc++.so.
|
||||||
|
---
|
||||||
|
.../testsuite/21_strings/basic_string/capacity/char/1.cc | 6 ------
|
||||||
|
.../21_strings/basic_string/capacity/char/18654.cc | 2 +-
|
||||||
|
.../testsuite/21_strings/basic_string/capacity/wchar_t/1.cc | 6 ------
|
||||||
|
.../21_strings/basic_string/capacity/wchar_t/18654.cc | 2 +-
|
||||||
|
4 files changed, 2 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc
|
||||||
|
index eea69771f..64187718d 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc
|
||||||
|
@@ -41,12 +41,6 @@ void test01()
|
||||||
|
sz01 = str01.capacity();
|
||||||
|
VERIFY( sz01 < sz02 );
|
||||||
|
|
||||||
|
- // P0966: reserve should not shrink
|
||||||
|
- str01.reserve(100);
|
||||||
|
- sz01 = str01.capacity();
|
||||||
|
- str01.reserve(sz01 - 1);
|
||||||
|
- VERIFY( str01.capacity() == sz01 );
|
||||||
|
-
|
||||||
|
sz01 = str01.size() + 5;
|
||||||
|
str01.resize(sz01);
|
||||||
|
sz02 = str01.size();
|
||||||
|
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc
|
||||||
|
index 02ce78ea6..3a7352123 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc
|
||||||
|
@@ -51,7 +51,7 @@ void test01()
|
||||||
|
VERIFY( cap >= 3 * i );
|
||||||
|
|
||||||
|
str.reserve(2 * i);
|
||||||
|
- VERIFY( str.capacity() == cap );
|
||||||
|
+ VERIFY( str.capacity() == 2 * i );
|
||||||
|
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
str.reserve();
|
||||||
|
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc
|
||||||
|
index f01a27e8c..70915a94d 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc
|
||||||
|
@@ -41,12 +41,6 @@ void test01()
|
||||||
|
sz01 = str01.capacity();
|
||||||
|
VERIFY( sz01 < sz02 );
|
||||||
|
|
||||||
|
- // P0966: reserve should not shrink
|
||||||
|
- str01.reserve(100);
|
||||||
|
- sz01 = str01.capacity();
|
||||||
|
- str01.reserve(sz01 - 1);
|
||||||
|
- VERIFY( str01.capacity() == sz01 );
|
||||||
|
-
|
||||||
|
sz01 = str01.size() + 5;
|
||||||
|
str01.resize(sz01);
|
||||||
|
sz02 = str01.size();
|
||||||
|
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc
|
||||||
|
index 267fd198b..c9711a294 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc
|
||||||
|
@@ -51,7 +51,7 @@ void test01()
|
||||||
|
VERIFY( cap >= 3 * i );
|
||||||
|
|
||||||
|
str.reserve(2 * i);
|
||||||
|
- VERIFY( str.capacity() == cap );
|
||||||
|
+ VERIFY( str.capacity() == 2 * i );
|
||||||
|
|
||||||
|
#if __cplusplus <= 201703L
|
||||||
|
str.reserve();
|
||||||
|
--
|
||||||
|
2.31.1
|
@ -0,0 +1,46 @@
|
|||||||
|
From d7fae9f17479c44dae68483d457fc3fbb58c4b83 Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Malcolm <dmalcolm@redhat.com>
|
||||||
|
Date: Wed, 25 Aug 2021 15:57:36 -0400
|
||||||
|
Subject: [PATCH 04/17] operator>>(istream&, char(&)[N]) eofbit fixes are not
|
||||||
|
available in DTS
|
||||||
|
|
||||||
|
The upstream commit on 2020-08--6:
|
||||||
|
Do not set eofbit eagerly in operator>>(istream&, char(&)[N])
|
||||||
|
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=4e39f563c0cd25401f689c2093cb8c13692156ef
|
||||||
|
altered the behaviour of std::istream symbols defined in libstdc++.so,
|
||||||
|
but with DTS you get the old definitions from the system libstdc++.so
|
||||||
|
|
||||||
|
Hence this patch tweaks the new tests to avoid failing when run against
|
||||||
|
the system libstdc++.so
|
||||||
|
---
|
||||||
|
.../21_strings/basic_string/inserters_extractors/char/13.cc | 1 -
|
||||||
|
.../21_strings/basic_string/inserters_extractors/wchar_t/13.cc | 1 -
|
||||||
|
2 files changed, 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/13.cc b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/13.cc
|
||||||
|
index a25d8a93d..7d85e6ead 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/13.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/13.cc
|
||||||
|
@@ -29,7 +29,6 @@ test01()
|
||||||
|
std::string buf;
|
||||||
|
in.width(4);
|
||||||
|
in >> buf;
|
||||||
|
- VERIFY( !in.eof() ); // should stop after reading 4 chars
|
||||||
|
VERIFY( buf == str );
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/13.cc b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/13.cc
|
||||||
|
index f15294a44..fa5fe3d4a 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/13.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/13.cc
|
||||||
|
@@ -29,7 +29,6 @@ test01()
|
||||||
|
std::wstring buf;
|
||||||
|
in.width(4);
|
||||||
|
in >> buf;
|
||||||
|
- VERIFY( !in.eof() ); // should stop after reading 4 chars
|
||||||
|
VERIFY( buf == str );
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -0,0 +1,53 @@
|
|||||||
|
From 3ede89bd19328c26bcd881b873cf4a766ae0da3a Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Malcolm <dmalcolm@redhat.com>
|
||||||
|
Date: Wed, 25 Aug 2021 17:04:02 -0400
|
||||||
|
Subject: [PATCH 05/17] Disable tests for PR libstdc++/79820 and PR
|
||||||
|
libstdc++/81751 under DTS
|
||||||
|
|
||||||
|
Upstream commit 2017-08-09
|
||||||
|
PR libstdc++/81751 don't call fflush(NULL)
|
||||||
|
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=04d07b61cb80fd97e98eb39451ff6a8675a63d90
|
||||||
|
added these test cases as part of verifying the behavior of sys_open (that
|
||||||
|
it resets errno and doesn't call fflush on NULL).
|
||||||
|
|
||||||
|
These symbols are in the system stdlib when run from DTS and thus aren't
|
||||||
|
fixed by the above change:
|
||||||
|
|
||||||
|
1521: 000000000007c430 104 FUNC GLOBAL DEFAULT 12 std::__basic_file<char>::sys_open(int, std::_Ios_Openmode)@@GLIBCXX_3.4
|
||||||
|
2895: 000000000007c730 95 FUNC GLOBAL DEFAULT 12 std::__basic_file<char>::sys_open(_IO_FILE*, std::_Ios_Openmode)@@GLIBCXX_3.4
|
||||||
|
|
||||||
|
This patch disables the non-fixed assertions.
|
||||||
|
---
|
||||||
|
libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc | 2 --
|
||||||
|
libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc | 1 -
|
||||||
|
2 files changed, 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc b/libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc
|
||||||
|
index 278b99169..e2a8e3b3d 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc
|
||||||
|
@@ -26,9 +26,7 @@ void
|
||||||
|
test01()
|
||||||
|
{
|
||||||
|
FILE* f = std::fopen("79820.txt", "w");
|
||||||
|
- errno = 127;
|
||||||
|
__gnu_cxx::stdio_filebuf<char> b(f, std::ios::out, BUFSIZ);
|
||||||
|
- VERIFY(errno == 127); // PR libstdc++/79820
|
||||||
|
b.close();
|
||||||
|
std::fclose(f);
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc b/libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc
|
||||||
|
index 21aa06f78..6a231d7cf 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc
|
||||||
|
@@ -31,7 +31,6 @@ test01()
|
||||||
|
FILE* in1 = std::fopen("81751.txt", "r");
|
||||||
|
__gnu_cxx::stdio_filebuf<char> buf1(in1, std::ios::in, BUFSIZ);
|
||||||
|
int c = buf1.sgetc();
|
||||||
|
- VERIFY( c == std::char_traits<char>::eof() ); // PR libstdc++/81751
|
||||||
|
|
||||||
|
std::fflush(out);
|
||||||
|
FILE* in2 = std::fopen("81751.txt", "r");
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -0,0 +1,118 @@
|
|||||||
|
From 59388ee3dac5c737086ed1f83f552a44481a2213 Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Malcolm <dmalcolm@redhat.com>
|
||||||
|
Date: Tue, 31 Aug 2021 16:08:57 -0400
|
||||||
|
Subject: [PATCH 06/17] Don't assume has_facet<codecvt_c16> when run against
|
||||||
|
system libstdc++
|
||||||
|
|
||||||
|
Upstream commit 2019-02-19:
|
||||||
|
P0482R5 char8_t: Standard library support
|
||||||
|
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=c124af936b6b225eb548ccdd7f01400511d784dc
|
||||||
|
added new locale facets for char8_t.
|
||||||
|
|
||||||
|
has_facet<codecvt_c16> returns false, as it is using the std::locale the system libstdc++:
|
||||||
|
|
||||||
|
$ eu-readelf -s char16_t-char8_t.exe |c++filt |grep UNDEF|grep locale
|
||||||
|
3: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::locale::classic()@GLIBCXX_3.4 (2)
|
||||||
|
8: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::locale::locale(std::locale const&)@GLIBCXX_3.4 (2)
|
||||||
|
13: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::locale::id::_M_id() const@GLIBCXX_3.4 (2)
|
||||||
|
22: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::locale::~locale()@GLIBCXX_3.4 (2)
|
||||||
|
64: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::locale::classic()@@GLIBCXX_3.4
|
||||||
|
76: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::locale::locale(std::locale const&)@@GLIBCXX_3.4
|
||||||
|
89: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::locale::id::_M_id() const@@GLIBCXX_3.4
|
||||||
|
108: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::locale::~locale()@@GLIBCXX_3.4
|
||||||
|
|
||||||
|
Hence this patch tweaks tests so that they bail out if run against an older std::locale.
|
||||||
|
---
|
||||||
|
libstdc++-v3/testsuite/22_locale/codecvt/char16_t-char8_t.cc | 3 ++-
|
||||||
|
libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc | 3 ++-
|
||||||
|
libstdc++-v3/testsuite/22_locale/codecvt/char32_t-char8_t.cc | 3 ++-
|
||||||
|
libstdc++-v3/testsuite/22_locale/codecvt/char32_t.cc | 3 ++-
|
||||||
|
libstdc++-v3/testsuite/22_locale/codecvt/utf8-char8_t.cc | 2 ++
|
||||||
|
libstdc++-v3/testsuite/22_locale/codecvt/utf8.cc | 2 ++
|
||||||
|
6 files changed, 12 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/codecvt/char16_t-char8_t.cc b/libstdc++-v3/testsuite/22_locale/codecvt/char16_t-char8_t.cc
|
||||||
|
index 71a23bef4..d4aa519a2 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/codecvt/char16_t-char8_t.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/codecvt/char16_t-char8_t.cc
|
||||||
|
@@ -31,7 +31,8 @@ test01()
|
||||||
|
using namespace std;
|
||||||
|
typedef codecvt<char16_t, char8_t, mbstate_t> codecvt_c16;
|
||||||
|
locale loc_c = locale::classic();
|
||||||
|
- VERIFY(has_facet<codecvt_c16>(loc_c));
|
||||||
|
+ if (!has_facet<codecvt_c16>(loc_c))
|
||||||
|
+ return;
|
||||||
|
const codecvt_c16* const cvt = &use_facet<codecvt_c16>(loc_c);
|
||||||
|
|
||||||
|
VERIFY(!cvt->always_noconv());
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc b/libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc
|
||||||
|
index 7b5ce126d..05c77b2b1 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc
|
||||||
|
@@ -29,7 +29,8 @@ test01()
|
||||||
|
using namespace std;
|
||||||
|
typedef codecvt<char16_t, char, mbstate_t> codecvt_c16;
|
||||||
|
locale loc_c = locale::classic();
|
||||||
|
- VERIFY(has_facet<codecvt_c16>(loc_c));
|
||||||
|
+ if (!has_facet<codecvt_c16>(loc_c))
|
||||||
|
+ return;
|
||||||
|
const codecvt_c16* const cvt = &use_facet<codecvt_c16>(loc_c);
|
||||||
|
|
||||||
|
VERIFY(!cvt->always_noconv());
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/codecvt/char32_t-char8_t.cc b/libstdc++-v3/testsuite/22_locale/codecvt/char32_t-char8_t.cc
|
||||||
|
index f30ae22e9..281969e9b 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/codecvt/char32_t-char8_t.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/codecvt/char32_t-char8_t.cc
|
||||||
|
@@ -33,7 +33,8 @@ test01()
|
||||||
|
using namespace std;
|
||||||
|
typedef codecvt<char32_t, char8_t, mbstate_t> codecvt_c32;
|
||||||
|
locale loc_c = locale::classic();
|
||||||
|
- VERIFY(has_facet<codecvt_c32>(loc_c));
|
||||||
|
+ if (!has_facet<codecvt_c32>(loc_c))
|
||||||
|
+ return;
|
||||||
|
const codecvt_c32* const cvt = &use_facet<codecvt_c32>(loc_c);
|
||||||
|
|
||||||
|
VERIFY(!cvt->always_noconv());
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/codecvt/char32_t.cc b/libstdc++-v3/testsuite/22_locale/codecvt/char32_t.cc
|
||||||
|
index 558ba9145..82980b702 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/codecvt/char32_t.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/codecvt/char32_t.cc
|
||||||
|
@@ -31,7 +31,8 @@ test01()
|
||||||
|
using namespace std;
|
||||||
|
typedef codecvt<char32_t, char, mbstate_t> codecvt_c32;
|
||||||
|
locale loc_c = locale::classic();
|
||||||
|
- VERIFY(has_facet<codecvt_c32>(loc_c));
|
||||||
|
+ if (!has_facet<codecvt_c32>(loc_c))
|
||||||
|
+ return;
|
||||||
|
const codecvt_c32* const cvt = &use_facet<codecvt_c32>(loc_c);
|
||||||
|
|
||||||
|
VERIFY(!cvt->always_noconv());
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/codecvt/utf8-char8_t.cc b/libstdc++-v3/testsuite/22_locale/codecvt/utf8-char8_t.cc
|
||||||
|
index 5eab05ba2..d6f663ce6 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/codecvt/utf8-char8_t.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/codecvt/utf8-char8_t.cc
|
||||||
|
@@ -34,6 +34,8 @@ void test(const C* from)
|
||||||
|
std::mbstate_t state{};
|
||||||
|
char8_t buf[16] = { };
|
||||||
|
using test_type = std::codecvt<C, char8_t, std::mbstate_t>;
|
||||||
|
+ if (!std::has_facet<test_type>(std::locale::classic()))
|
||||||
|
+ return;
|
||||||
|
const test_type& cvt = std::use_facet<test_type>(std::locale::classic());
|
||||||
|
auto from_end = from + len;
|
||||||
|
auto from_next = from;
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/codecvt/utf8.cc b/libstdc++-v3/testsuite/22_locale/codecvt/utf8.cc
|
||||||
|
index b1b3cff31..167bc0ca3 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/codecvt/utf8.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/codecvt/utf8.cc
|
||||||
|
@@ -32,6 +32,8 @@ void test(const C* from)
|
||||||
|
std::mbstate_t state{};
|
||||||
|
char buf[16] = { };
|
||||||
|
using test_type = std::codecvt<C, char, std::mbstate_t>;
|
||||||
|
+ if (!std::has_facet<test_type>(std::locale::classic()))
|
||||||
|
+ return;
|
||||||
|
const test_type& cvt = std::use_facet<test_type>(std::locale::classic());
|
||||||
|
auto from_end = from + len;
|
||||||
|
auto from_next = from;
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
42
SOURCES/0008-testsuite-build-plugins-with-std-c-11.patch
Normal file
42
SOURCES/0008-testsuite-build-plugins-with-std-c-11.patch
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
From 16694079a3f415f5e5683b0afe6978810ac259b1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Malcolm <dmalcolm@redhat.com>
|
||||||
|
Date: Tue, 31 Aug 2021 17:01:05 -0400
|
||||||
|
Subject: [PATCH 08/17] testsuite: build plugins with -std=c++11
|
||||||
|
|
||||||
|
Various testsuite plugins fail when built within DTS with e.g.:
|
||||||
|
cc1: error: cannot load plugin ./diagnostic_plugin_test_paths.so: /builddir/build/BUILD/gcc-11.1.1-20210623/obj-x86_64-redhat-linux/x86_64-redhat-linux/libstdc++-v3/src/.libs/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./diagnostic_plugin_test_paths.so)
|
||||||
|
|
||||||
|
These turn out to C++14's sized deletion
|
||||||
|
(see https://en.cppreference.com/w/cpp/memory/new/operator_delete):
|
||||||
|
|
||||||
|
14: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF _ZdlPvm@CXXABI_1.3.9 (4)
|
||||||
|
48: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF _ZdlPvm@CXXABI_1.3.9
|
||||||
|
14: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF operator delete(void*, unsigned long)@CXXABI_1.3.9 (4)
|
||||||
|
48: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF operator delete(void*, unsigned long)@CXXABI_1.3.9
|
||||||
|
|
||||||
|
Looks like plugin.exp is building the test plugins against the
|
||||||
|
freshly-built libstdc++, and then trying to dynamically load them
|
||||||
|
against the system libstdc++.
|
||||||
|
|
||||||
|
This patch forces the use of -std=c++11 when building these test plugins,
|
||||||
|
to sidestep the problem.
|
||||||
|
---
|
||||||
|
gcc/testsuite/lib/plugin-support.exp | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/gcc/testsuite/lib/plugin-support.exp b/gcc/testsuite/lib/plugin-support.exp
|
||||||
|
index 6d651901e..9943dbb37 100644
|
||||||
|
--- a/gcc/testsuite/lib/plugin-support.exp
|
||||||
|
+++ b/gcc/testsuite/lib/plugin-support.exp
|
||||||
|
@@ -103,7 +103,7 @@ proc plugin-test-execute { plugin_src plugin_tests } {
|
||||||
|
}
|
||||||
|
set optstr [concat $optstr "-DIN_GCC -fPIC -shared -fno-rtti -undefined dynamic_lookup"]
|
||||||
|
} else {
|
||||||
|
- set plug_cflags $PLUGINCFLAGS
|
||||||
|
+ set plug_cflags "$PLUGINCFLAGS -std=c++11"
|
||||||
|
set optstr "$includes $extra_flags -DIN_GCC -fPIC -shared -fno-rtti"
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -0,0 +1,36 @@
|
|||||||
|
From 87e2a4f28b444f376ebe15f38e2743eb952ff355 Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Malcolm <dmalcolm@redhat.com>
|
||||||
|
Date: Wed, 1 Sep 2021 11:02:53 -0400
|
||||||
|
Subject: [PATCH 09/17] Fix 22_locale/locale/cons/unicode.cc when run under DTS
|
||||||
|
|
||||||
|
Various has_facet calls return false in DTS, as DTS is using the
|
||||||
|
std::locale from the system libstdc++.
|
||||||
|
|
||||||
|
Hence this patch tweaks tests to remove the VERIFY from the result of
|
||||||
|
the call, so that they do not fail if run against an older
|
||||||
|
std::locale.
|
||||||
|
|
||||||
|
These VERIFY tests were added upstream 2015-01-16 in
|
||||||
|
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=bb93f35da1612940266f5d159b6cc5a3e54fca14
|
||||||
|
---
|
||||||
|
libstdc++-v3/testsuite/22_locale/locale/cons/unicode.cc | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/locale/cons/unicode.cc b/libstdc++-v3/testsuite/22_locale/locale/cons/unicode.cc
|
||||||
|
index 15c621099..328145094 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/locale/cons/unicode.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/locale/cons/unicode.cc
|
||||||
|
@@ -70,8 +70,8 @@ void test01()
|
||||||
|
VERIFY( has_facet<w_codecvt>(loc13) );
|
||||||
|
#endif
|
||||||
|
#ifdef _GLIBCXX_USE_C99_STDINT_TR1
|
||||||
|
- VERIFY( has_facet<u16_codecvt>(loc13) );
|
||||||
|
- VERIFY( has_facet<u32_codecvt>(loc13) );
|
||||||
|
+ (void)( has_facet<u16_codecvt>(loc13) );
|
||||||
|
+ (void)( has_facet<u32_codecvt>(loc13) );
|
||||||
|
#ifdef _GLIBCXX_USE_CHAR8_T
|
||||||
|
VERIFY( has_facet<u16u8_codecvt>(loc13) );
|
||||||
|
VERIFY( has_facet<u32u8_codecvt>(loc13) );
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -0,0 +1,30 @@
|
|||||||
|
From d1555ffdd9b4fa6f3ceaa166bbfee0b3b9973ecf Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Malcolm <dmalcolm@redhat.com>
|
||||||
|
Date: Wed, 1 Sep 2021 11:24:34 -0400
|
||||||
|
Subject: [PATCH 10/17] Don't verify exception handling in basic_filebuf::close
|
||||||
|
in DTS [PR81256]
|
||||||
|
|
||||||
|
27_io/basic_filebuf/close/81256.cc was added upstream 2018-05-14 in
|
||||||
|
PR libstdc++/81256 fix exception handling in basic_filebuf::close
|
||||||
|
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=e77497ab777d3dfa19224648d658220807ab7419
|
||||||
|
|
||||||
|
When run under DTS,
|
||||||
|
std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::close
|
||||||
|
comes from the system libstdc++, and hence the test fails.
|
||||||
|
---
|
||||||
|
libstdc++-v3/testsuite/27_io/basic_filebuf/close/81256.cc | 1 -
|
||||||
|
1 file changed, 1 deletion(-)
|
||||||
|
|
||||||
|
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/81256.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/81256.cc
|
||||||
|
@@ -80,7 +80,6 @@ test01()
|
||||||
|
caught = true;
|
||||||
|
}
|
||||||
|
VERIFY( conv.exceptions_thrown == 1 );
|
||||||
|
- VERIFY( caught );
|
||||||
|
}
|
||||||
|
VERIFY( conv.exceptions_thrown == 1 );
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -0,0 +1,117 @@
|
|||||||
|
From b6989e3a4acda2d75612f3f3847dbea4245ff536 Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Malcolm <dmalcolm@redhat.com>
|
||||||
|
Date: Wed, 1 Sep 2021 15:39:45 -0400
|
||||||
|
Subject: [PATCH 11/17] Add dts.exp and use it to fix
|
||||||
|
22_locale/messages/13631.cc
|
||||||
|
|
||||||
|
This test was added upstream 2014-12-03:
|
||||||
|
"re PR libstdc++/13631 (Problems in messages)"
|
||||||
|
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=d31008d7a0d53b431f176aad8dda5498de823122
|
||||||
|
|
||||||
|
as part of a fix that is present in the system libstdc++.so in
|
||||||
|
GCC 5 onwards.
|
||||||
|
|
||||||
|
When run in DTS against such a system library, this test will fail.
|
||||||
|
This patch introduces a dts.exp which detects the version of the
|
||||||
|
underlying system libstdc++.so and exposes it to tests via
|
||||||
|
-D__CXXSTDLIB_SO_VERSION__=, so that we can ifdef specific tests
|
||||||
|
away, conditionally on the base GCC.
|
||||||
|
---
|
||||||
|
.../testsuite/22_locale/messages/13631.cc | 7 +++++
|
||||||
|
libstdc++-v3/testsuite/lib/dts.exp | 31 +++++++++++++++++++
|
||||||
|
libstdc++-v3/testsuite/lib/libstdc++.exp | 6 ++++
|
||||||
|
3 files changed, 44 insertions(+)
|
||||||
|
create mode 100644 libstdc++-v3/testsuite/lib/dts.exp
|
||||||
|
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/messages/13631.cc b/libstdc++-v3/testsuite/22_locale/messages/13631.cc
|
||||||
|
index b8ae3d4f1..5b20df382 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/messages/13631.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/messages/13631.cc
|
||||||
|
@@ -50,7 +50,10 @@ void test01()
|
||||||
|
msgs_facet.close(fake_msgs);
|
||||||
|
msgs_facet.close(msgs);
|
||||||
|
|
||||||
|
+ // Fixed upstream in GCC 5
|
||||||
|
+#if __CXXSTDLIB_SO_VERSION__ >= 501000
|
||||||
|
VERIFY( translation1 == translation2 );
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void test02()
|
||||||
|
@@ -72,8 +75,12 @@ void test02()
|
||||||
|
std::wstring translation1 = msgs_facet.get(msgs, 0, 0, msgid);
|
||||||
|
|
||||||
|
// Without a real translation this test doesn't mean anything:
|
||||||
|
+
|
||||||
|
+ // Fixed upstream in GCC 5
|
||||||
|
+#if __CXXSTDLIB_SO_VERSION__ >= 501000
|
||||||
|
VERIFY( !translation1.empty() );
|
||||||
|
VERIFY( translation1 != msgid );
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
// Opening another catalog was enough to show the problem, even a fake
|
||||||
|
// catalog.
|
||||||
|
diff --git a/libstdc++-v3/testsuite/lib/dts.exp b/libstdc++-v3/testsuite/lib/dts.exp
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000..76ece66d3
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/libstdc++-v3/testsuite/lib/dts.exp
|
||||||
|
@@ -0,0 +1,31 @@
|
||||||
|
+# For DTS testing, generate a number expressing the
|
||||||
|
+# system version of libstdc++.so
|
||||||
|
+#
|
||||||
|
+# Generate a version number equivalent to
|
||||||
|
+# #define GCC_VERSION (__GNUC__ * 10000 \
|
||||||
|
+# + __GNUC_MINOR__ * 100 \
|
||||||
|
+# + __GNUC_PATCHLEVEL__)
|
||||||
|
+#
|
||||||
|
+# For example, given an underlying version of gcc 4.8.5
|
||||||
|
+# this function will return 408050.
|
||||||
|
+
|
||||||
|
+proc get_dts_base_version { } {
|
||||||
|
+
|
||||||
|
+ # Invoke gcc in the PATH to get at the underlying GCC version
|
||||||
|
+ # in dotted form (e.g. "4.8.5").
|
||||||
|
+ set dotted_version [exec gcc -dumpversion]
|
||||||
|
+ verbose "dotted_version: '$dotted_version'" 2
|
||||||
|
+
|
||||||
|
+ # Extract major, minor, patchlevel
|
||||||
|
+ regexp {([0-9]+)\.([0-9]+)\.([0-9]+)} \
|
||||||
|
+ $dotted_version \
|
||||||
|
+ _ major minor patchlevel
|
||||||
|
+ verbose "major: '$major'" 2
|
||||||
|
+ verbose "minor: '$minor'" 2
|
||||||
|
+ verbose "patchlevel: '$patchlevel'" 2
|
||||||
|
+
|
||||||
|
+ set base_gcc_version [expr (($major * 10000) + ($minor * 100) + $patchlevel)]
|
||||||
|
+ verbose "base_gcc_version: '$base_gcc_version'" 2
|
||||||
|
+
|
||||||
|
+ return $base_gcc_version
|
||||||
|
+}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp
|
||||||
|
index 7f9580db8..5e4b32f76 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/lib/libstdc++.exp
|
||||||
|
+++ b/libstdc++-v3/testsuite/lib/libstdc++.exp
|
||||||
|
@@ -58,6 +58,7 @@ load_gcc_lib timeout.exp
|
||||||
|
load_gcc_lib timeout-dg.exp
|
||||||
|
load_gcc_lib wrapper.exp
|
||||||
|
load_gcc_lib target-utils.exp
|
||||||
|
+load_lib dts.exp
|
||||||
|
|
||||||
|
# Useful for debugging. Pass the name of a variable and the verbosity
|
||||||
|
# threshold (number of -v's on the command line).
|
||||||
|
@@ -323,6 +324,11 @@ proc libstdc++_init { testfile } {
|
||||||
|
set ccflags "$cxxflags -DLOCALEDIR=\".\""
|
||||||
|
set cxxflags "$cxxflags -DLOCALEDIR=\".\""
|
||||||
|
|
||||||
|
+ # For DTS testing, expose the system version of libstdc++.so as
|
||||||
|
+ # a preprocessor define.
|
||||||
|
+ set base_gcc_version [get_dts_base_version]
|
||||||
|
+ set cxxflags "$cxxflags -D__CXXSTDLIB_SO_VERSION__=$base_gcc_version"
|
||||||
|
+
|
||||||
|
# If a PCH file is available, use it. We must delay performing
|
||||||
|
# this check until $cxx and such have been initialized because we
|
||||||
|
# perform a test compilation. (Ideally, gcc --print-file-name would
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
28
SOURCES/0012-dts.exp-use-usr-bin-gcc.patch
Normal file
28
SOURCES/0012-dts.exp-use-usr-bin-gcc.patch
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
From c3910bb945aba02e0c06dec041da9f1f148b0df1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Malcolm <dmalcolm@redhat.com>
|
||||||
|
Date: Thu, 2 Sep 2021 11:40:42 -0400
|
||||||
|
Subject: [PATCH 12/17] dts.exp: use /usr/bin/gcc
|
||||||
|
|
||||||
|
---
|
||||||
|
libstdc++-v3/testsuite/lib/dts.exp | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libstdc++-v3/testsuite/lib/dts.exp b/libstdc++-v3/testsuite/lib/dts.exp
|
||||||
|
index 76ece66d3..dc5cf3e95 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/lib/dts.exp
|
||||||
|
+++ b/libstdc++-v3/testsuite/lib/dts.exp
|
||||||
|
@@ -11,9 +11,9 @@
|
||||||
|
|
||||||
|
proc get_dts_base_version { } {
|
||||||
|
|
||||||
|
- # Invoke gcc in the PATH to get at the underlying GCC version
|
||||||
|
+ # Invoke /usr/bin/gcc to get at the underlying GCC version
|
||||||
|
# in dotted form (e.g. "4.8.5").
|
||||||
|
- set dotted_version [exec gcc -dumpversion]
|
||||||
|
+ set dotted_version [exec /usr/bin/gcc -dumpversion]
|
||||||
|
verbose "dotted_version: '$dotted_version'" 2
|
||||||
|
|
||||||
|
# Extract major, minor, patchlevel
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -0,0 +1,86 @@
|
|||||||
|
From c922a56d4461c9e4ca2af07ecccb3626b99a35ae Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Malcolm <dmalcolm@redhat.com>
|
||||||
|
Date: Thu, 2 Sep 2021 11:44:37 -0400
|
||||||
|
Subject: [PATCH 13/17] Rename __CXXSTDLIB_SO_VERSION__ to
|
||||||
|
__LIBSTDCXX_SO_VERSION and only use major version
|
||||||
|
|
||||||
|
---
|
||||||
|
.../testsuite/22_locale/messages/13631.cc | 4 ++--
|
||||||
|
libstdc++-v3/testsuite/lib/dts.exp | 18 +++++-------------
|
||||||
|
libstdc++-v3/testsuite/lib/libstdc++.exp | 4 ++--
|
||||||
|
3 files changed, 9 insertions(+), 17 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/messages/13631.cc b/libstdc++-v3/testsuite/22_locale/messages/13631.cc
|
||||||
|
index 5b20df382..f4c5eb7a2 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/messages/13631.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/messages/13631.cc
|
||||||
|
@@ -51,7 +51,7 @@ void test01()
|
||||||
|
msgs_facet.close(msgs);
|
||||||
|
|
||||||
|
// Fixed upstream in GCC 5
|
||||||
|
-#if __CXXSTDLIB_SO_VERSION__ >= 501000
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 5
|
||||||
|
VERIFY( translation1 == translation2 );
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
@@ -77,7 +77,7 @@ void test02()
|
||||||
|
// Without a real translation this test doesn't mean anything:
|
||||||
|
|
||||||
|
// Fixed upstream in GCC 5
|
||||||
|
-#if __CXXSTDLIB_SO_VERSION__ >= 501000
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 5
|
||||||
|
VERIFY( !translation1.empty() );
|
||||||
|
VERIFY( translation1 != msgid );
|
||||||
|
#endif
|
||||||
|
diff --git a/libstdc++-v3/testsuite/lib/dts.exp b/libstdc++-v3/testsuite/lib/dts.exp
|
||||||
|
index dc5cf3e95..60f94bd6d 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/lib/dts.exp
|
||||||
|
+++ b/libstdc++-v3/testsuite/lib/dts.exp
|
||||||
|
@@ -1,15 +1,10 @@
|
||||||
|
-# For DTS testing, generate a number expressing the
|
||||||
|
-# system version of libstdc++.so
|
||||||
|
-#
|
||||||
|
-# Generate a version number equivalent to
|
||||||
|
-# #define GCC_VERSION (__GNUC__ * 10000 \
|
||||||
|
-# + __GNUC_MINOR__ * 100 \
|
||||||
|
-# + __GNUC_PATCHLEVEL__)
|
||||||
|
+# For DTS testing, get the major version of the
|
||||||
|
+# system libstdc++.so
|
||||||
|
#
|
||||||
|
# For example, given an underlying version of gcc 4.8.5
|
||||||
|
-# this function will return 408050.
|
||||||
|
+# this function will return 4
|
||||||
|
|
||||||
|
-proc get_dts_base_version { } {
|
||||||
|
+proc get_dts_base_major_version { } {
|
||||||
|
|
||||||
|
# Invoke /usr/bin/gcc to get at the underlying GCC version
|
||||||
|
# in dotted form (e.g. "4.8.5").
|
||||||
|
@@ -24,8 +19,5 @@ proc get_dts_base_version { } {
|
||||||
|
verbose "minor: '$minor'" 2
|
||||||
|
verbose "patchlevel: '$patchlevel'" 2
|
||||||
|
|
||||||
|
- set base_gcc_version [expr (($major * 10000) + ($minor * 100) + $patchlevel)]
|
||||||
|
- verbose "base_gcc_version: '$base_gcc_version'" 2
|
||||||
|
-
|
||||||
|
- return $base_gcc_version
|
||||||
|
+ return $major
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp
|
||||||
|
index 5e4b32f76..297485b19 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/lib/libstdc++.exp
|
||||||
|
+++ b/libstdc++-v3/testsuite/lib/libstdc++.exp
|
||||||
|
@@ -326,8 +326,8 @@ proc libstdc++_init { testfile } {
|
||||||
|
|
||||||
|
# For DTS testing, expose the system version of libstdc++.so as
|
||||||
|
# a preprocessor define.
|
||||||
|
- set base_gcc_version [get_dts_base_version]
|
||||||
|
- set cxxflags "$cxxflags -D__CXXSTDLIB_SO_VERSION__=$base_gcc_version"
|
||||||
|
+ set base_gcc_version [get_dts_base_major_version]
|
||||||
|
+ set cxxflags "$cxxflags -D__LIBSTDCXX_SO_VERSION=$base_gcc_version"
|
||||||
|
|
||||||
|
# If a PCH file is available, use it. We must delay performing
|
||||||
|
# this check until $cxx and such have been initialized because we
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -0,0 +1,84 @@
|
|||||||
|
From fa770c25013df537c41d0929c4202b0a774a6a75 Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Malcolm <dmalcolm@redhat.com>
|
||||||
|
Date: Thu, 2 Sep 2021 15:27:59 -0400
|
||||||
|
Subject: [PATCH 14/17] Conditionalize tests for PR libstdc++/98466 on
|
||||||
|
__LIBSTDCXX_SO_VERSION >= 11
|
||||||
|
|
||||||
|
The tests:
|
||||||
|
23_containers/deque/debug/98466.cc
|
||||||
|
23_containers/unordered_map/debug/98466.cc
|
||||||
|
were added upstream 2021-01-01 as part of:
|
||||||
|
libstdc++: Implement N3644 for _GLIBCXX_DEBUG iterators
|
||||||
|
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=05a30af3f237984b4dcf1dbbc17fdac583c46506
|
||||||
|
but fail when run in DTS against a system libstdc++.so
|
||||||
|
from an older GCC.
|
||||||
|
|
||||||
|
In particular, they use the older implementation of _M_can_compare from
|
||||||
|
the dynamic library:
|
||||||
|
|
||||||
|
$ eu-readelf -s 98466.exe | grep can_compare | c++filt
|
||||||
|
11: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF __gnu_debug::_Safe_iterator_base::_M_can_compare(__gnu_debug::_Safe_iterator_base const&) const@GLIBCXX_3.4 (4)
|
||||||
|
157: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF __gnu_debug::_Safe_iterator_base::_M_can_compare(__gnu_debug::_Safe_iterator_base const&) const@@GLIBCXX_3.4
|
||||||
|
---
|
||||||
|
.../testsuite/23_containers/deque/debug/98466.cc | 6 ++++++
|
||||||
|
.../23_containers/unordered_map/debug/98466.cc | 12 ++++++++++++
|
||||||
|
2 files changed, 18 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/libstdc++-v3/testsuite/23_containers/deque/debug/98466.cc b/libstdc++-v3/testsuite/23_containers/deque/debug/98466.cc
|
||||||
|
index c2d793374..e92d719bf 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/23_containers/deque/debug/98466.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/23_containers/deque/debug/98466.cc
|
||||||
|
@@ -26,11 +26,17 @@ void test01()
|
||||||
|
{
|
||||||
|
typedef typename __gnu_debug::deque<int>::iterator It;
|
||||||
|
It it = It();
|
||||||
|
+ // Fixed upstream in GCC 11
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 11
|
||||||
|
VERIFY( it == it );
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
typedef typename __gnu_debug::deque<int>::const_iterator Cit;
|
||||||
|
Cit cit = Cit();
|
||||||
|
+ // Fixed upstream in GCC 11
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 11
|
||||||
|
VERIFY( cit == cit );
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/debug/98466.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/98466.cc
|
||||||
|
index cc22b9ff8..3a1b6cd32 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/23_containers/unordered_map/debug/98466.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/98466.cc
|
||||||
|
@@ -25,16 +25,28 @@
|
||||||
|
void test01()
|
||||||
|
{
|
||||||
|
__gnu_debug::unordered_map<int, int>::iterator it{};
|
||||||
|
+ // Fixed upstream in GCC 11
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 11
|
||||||
|
VERIFY( it == it );
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
__gnu_debug::unordered_map<int, int>::const_iterator cit{};
|
||||||
|
+ // Fixed upstream in GCC 11
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 11
|
||||||
|
VERIFY( cit == cit );
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
__gnu_debug::unordered_map<int, int>::local_iterator lit{};
|
||||||
|
+ // Fixed upstream in GCC 11
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 11
|
||||||
|
VERIFY( lit == lit );
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
__gnu_debug::unordered_map<int, int>::const_local_iterator clit{};
|
||||||
|
+ // Fixed upstream in GCC 11
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 11
|
||||||
|
VERIFY( clit == clit );
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -0,0 +1,41 @@
|
|||||||
|
From 992665eab6c48d6a4819f42509346d24b277485d Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Malcolm <dmalcolm@redhat.com>
|
||||||
|
Date: Thu, 2 Sep 2021 16:17:29 -0400
|
||||||
|
Subject: [PATCH 15/17] Conditionalize test for PR libstdc++/87135 on
|
||||||
|
__LIBSTDCXX_SO_VERSION >= 9
|
||||||
|
|
||||||
|
This VERIFY was added upstream 2018-09-18 as part of:
|
||||||
|
re PR libstdc++/87135 ([C++17] unordered containers violate iterator validity requirements)
|
||||||
|
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=a521e62615e439aea7502a52fd0f8a21eaa6304f
|
||||||
|
|
||||||
|
but fails when run in DTS against a system libstdc++.so from an older GCC.
|
||||||
|
|
||||||
|
In particular, rehash from the header is using
|
||||||
|
std::__detail::_Prime_rehash_policy::_M_next_bkt
|
||||||
|
from the system .so:
|
||||||
|
|
||||||
|
12: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::__detail::_Prime_rehash_policy::_M_next_bkt(unsigned long) const@GLIBCXX_3.4.18 (5)
|
||||||
|
225: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::__detail::_Prime_rehash_policy::_M_next_bkt(unsigned long) const@@GLIBCXX_3.4.18
|
||||||
|
---
|
||||||
|
.../23_containers/unordered_map/modifiers/reserve.cc | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/reserve.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/reserve.cc
|
||||||
|
index 58c8924b9..4c79ec2e6 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/reserve.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/reserve.cc
|
||||||
|
@@ -46,7 +46,11 @@ void test01()
|
||||||
|
|
||||||
|
// As long as we insert less than the reserved number of elements we
|
||||||
|
// shouldn't experiment any rehash.
|
||||||
|
+
|
||||||
|
+ // Fixed upstream in GCC 9
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 9
|
||||||
|
VERIFY( m.bucket_count() == bkts );
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
VERIFY( m.load_factor() <= m.max_load_factor() );
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -0,0 +1,102 @@
|
|||||||
|
From db8f53df0be1daeda3159c1413549ff40696c710 Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Malcolm <dmalcolm@redhat.com>
|
||||||
|
Date: Thu, 2 Sep 2021 17:02:33 -0400
|
||||||
|
Subject: [PATCH 16/17] Conditionalize test for hashtable bucket sizes on
|
||||||
|
__LIBSTDCXX_SO_VERSION >= 11
|
||||||
|
|
||||||
|
These tests were added upstream 2020-01-20 as part of:
|
||||||
|
libstdc++: Do not over-size hashtable buckets on range insertion
|
||||||
|
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=6dcf042368012e2d7ce1626ee5d378bf3ad0ccfc
|
||||||
|
|
||||||
|
but fail when run in DTS against a system libstdc++.so from an older GCC.
|
||||||
|
|
||||||
|
In particular, _M_insert_unique_node from the header is using the older
|
||||||
|
implementation of
|
||||||
|
std::__detail::_Prime_rehash_policy::_M_need_rehash
|
||||||
|
from the dynamic library.
|
||||||
|
|
||||||
|
23: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::__detail::_Prime_rehash_policy::_M_need_rehash(unsigned long, unsigned long, unsigned long) const@GLIBCXX_3.4.18 (5)
|
||||||
|
412: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::__detail::_Prime_rehash_policy::_M_need_rehash(unsigned long, unsigned long, unsigned long) const@@GLIBCXX_3.4.18
|
||||||
|
---
|
||||||
|
.../23_containers/unordered_set/cons/bucket_hint.cc | 10 ++++++++++
|
||||||
|
.../23_containers/unordered_set/modifiers/insert.cc | 9 +++++++++
|
||||||
|
2 files changed, 19 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/cons/bucket_hint.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/cons/bucket_hint.cc
|
||||||
|
index a3b014a3a..af231e54e 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/23_containers/unordered_set/cons/bucket_hint.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/23_containers/unordered_set/cons/bucket_hint.cc
|
||||||
|
@@ -29,7 +29,11 @@ void test01()
|
||||||
|
a.reserve(2);
|
||||||
|
|
||||||
|
std::unordered_set<int> b({ 0, 1, 0, 1, 0, 1, 0, 1 }, a.bucket_count());
|
||||||
|
+
|
||||||
|
+ // Fixed upstream in GCC 11
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 11
|
||||||
|
VERIFY( b.bucket_count() == a.bucket_count() );
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void test02()
|
||||||
|
@@ -40,7 +44,10 @@ void test02()
|
||||||
|
std::vector<int> v { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 };
|
||||||
|
|
||||||
|
std::unordered_set<int> b(v.begin(), v.end(), a.bucket_count());
|
||||||
|
+ // Fixed upstream in GCC 11
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 11
|
||||||
|
VERIFY( b.bucket_count() == a.bucket_count() );
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void test03()
|
||||||
|
@@ -51,7 +58,10 @@ void test03()
|
||||||
|
std::forward_list<int> fl { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 };
|
||||||
|
|
||||||
|
std::unordered_set<int> b(fl.begin(), fl.end(), a.bucket_count());
|
||||||
|
+ // Fixed upstream in GCC 11
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 11
|
||||||
|
VERIFY( b.bucket_count() == a.bucket_count() );
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/insert.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/insert.cc
|
||||||
|
index 015c2f872..aae8298ae 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/insert.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/insert.cc
|
||||||
|
@@ -30,7 +30,10 @@ void test01()
|
||||||
|
|
||||||
|
auto bkt_count = a.bucket_count();
|
||||||
|
a.insert({ 0, 1, 0, 1, 0, 1, 0, 1 });
|
||||||
|
+ // Fixed upstream in GCC 11
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 11
|
||||||
|
VERIFY( a.bucket_count() == bkt_count );
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void test02()
|
||||||
|
@@ -42,7 +45,10 @@ void test02()
|
||||||
|
|
||||||
|
auto bkt_count = a.bucket_count();
|
||||||
|
a.insert(v.begin(), v.end());
|
||||||
|
+ // Fixed upstream in GCC 11
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 11
|
||||||
|
VERIFY( a.bucket_count() == bkt_count );
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void test03()
|
||||||
|
@@ -54,7 +60,10 @@ void test03()
|
||||||
|
|
||||||
|
auto bkt_count = a.bucket_count();
|
||||||
|
a.insert(fl.begin(), fl.end());
|
||||||
|
+ // Fixed upstream in GCC 11
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 11
|
||||||
|
VERIFY( a.bucket_count() == bkt_count );
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -0,0 +1,33 @@
|
|||||||
|
From 102adc148612b50a4e3f12a88871ddc47bfb469e Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Malcolm <dmalcolm@redhat.com>
|
||||||
|
Date: Thu, 2 Sep 2021 17:17:50 -0400
|
||||||
|
Subject: [PATCH 17/17] Conditionalize test for PR libstdc++/71181 on
|
||||||
|
__LIBSTDCXX_SO_VERSION >= 7
|
||||||
|
|
||||||
|
This test was added upstream 2016-06-20 as part of:
|
||||||
|
re PR libstdc++/71181 (Reserving in unordered_map doesn't reserve enough)
|
||||||
|
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=29dbb034cb3199167a9d0aaed040733c72326eed
|
||||||
|
|
||||||
|
but fails when run in DTS against a system libstdc++.so from an older GCC.
|
||||||
|
---
|
||||||
|
.../testsuite/23_containers/unordered_set/hash_policy/71181.cc | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/71181.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/71181.cc
|
||||||
|
index 324d735b8..b2dcd0137 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/71181.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/71181.cc
|
||||||
|
@@ -39,7 +39,10 @@ template<typename _USet>
|
||||||
|
|
||||||
|
us.insert(nb_insert);
|
||||||
|
|
||||||
|
+ // Fixed upstream in GCC 7
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 7
|
||||||
|
VERIFY( us.bucket_count() == bkts );
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
13
SOURCES/0018-Use-CXX11-ABI.patch
Normal file
13
SOURCES/0018-Use-CXX11-ABI.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
diff --git a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
|
||||||
|
index 47f97dcb636..66f07aaa749 100644
|
||||||
|
--- a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
|
||||||
|
+++ b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
|
||||||
|
@@ -4,6 +4,8 @@
|
||||||
|
{ dg-do compile { target c++11 } }
|
||||||
|
{ dg-options "-O2 -Wall" } */
|
||||||
|
|
||||||
|
+#define _GLIBCXX_USE_CXX11_ABI 1
|
||||||
|
+
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
|
16
SOURCES/0019-xfails.patch
Normal file
16
SOURCES/0019-xfails.patch
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
Looks like a known fail:
|
||||||
|
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101674
|
||||||
|
|
||||||
|
diff --git a/gcc/testsuite/gcc.dg/uninit-pred-9_b.c b/gcc/testsuite/gcc.dg/uninit-pred-9_b.c
|
||||||
|
index 53c4a5399ea..c2b043f5019 100644
|
||||||
|
--- a/gcc/testsuite/gcc.dg/uninit-pred-9_b.c
|
||||||
|
+++ b/gcc/testsuite/gcc.dg/uninit-pred-9_b.c
|
||||||
|
@@ -17,7 +17,7 @@ int foo (int n, int l, int m, int r)
|
||||||
|
|
||||||
|
if (l > 100)
|
||||||
|
if ( (n <= 9) && (m < 100) && (r < 19) )
|
||||||
|
- blah(v); /* { dg-bogus "uninitialized" "bogus warning" { xfail powerpc64*-*-* cris-*-* } } */
|
||||||
|
+ blah(v); /* { dg-bogus "uninitialized" "bogus warning" { xfail powerpc64*-*-* cris-*-* s390*-*-* } } */
|
||||||
|
|
||||||
|
if ( (n <= 8) && (m < 99) && (r < 19) )
|
||||||
|
blah(v); /* { dg-bogus "uninitialized" "pr101674" { xfail mmix-*-* } } */
|
25
SOURCES/0020-more-fixes.patch
Normal file
25
SOURCES/0020-more-fixes.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
diff --git a/gcc/testsuite/g++.dg/warn/Waddress-5.C b/gcc/testsuite/g++.dg/warn/Waddress-5.C
|
||||||
|
index b1287b2fac3..877c21edc46 100644
|
||||||
|
--- a/gcc/testsuite/g++.dg/warn/Waddress-5.C
|
||||||
|
+++ b/gcc/testsuite/g++.dg/warn/Waddress-5.C
|
||||||
|
@@ -23,7 +23,7 @@ void T (bool);
|
||||||
|
void warn_memptr_if ()
|
||||||
|
{
|
||||||
|
// Exercise warnings for addresses of nonstatic member functions.
|
||||||
|
- if (&A::f == 0) // { dg-warning "the address '&A::f'" }
|
||||||
|
+ if (&A::f == 0) // { dg-warning "-Waddress" }
|
||||||
|
T (0);
|
||||||
|
|
||||||
|
if (&A::vf) // { dg-warning "-Waddress" }
|
||||||
|
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
|
||||||
|
index b64e71dae22..5bf47b20820 100644
|
||||||
|
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
|
||||||
|
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
|
||||||
|
@@ -12,7 +12,6 @@
|
||||||
|
jump threading opportunities. Skip the later tests on aarch64. */
|
||||||
|
/* { dg-final { scan-tree-dump-not "Jumps threaded" "dom3" { target { ! aarch64*-*-* } } } } */
|
||||||
|
/* { dg-final { scan-tree-dump "Jumps threaded: 7" "thread2" { target { ! aarch64*-*-* } } } } */
|
||||||
|
-/* { dg-final { scan-tree-dump "Jumps threaded: 18" "thread2" { target { aarch64*-*-* } } } } */
|
||||||
|
|
||||||
|
enum STATE {
|
||||||
|
S0=0,
|
424
SOURCES/0021-libstdc++-disable-tests.patch
Normal file
424
SOURCES/0021-libstdc++-disable-tests.patch
Normal file
@ -0,0 +1,424 @@
|
|||||||
|
See https://bugzilla.redhat.com/show_bug.cgi?id=2095749#c3
|
||||||
|
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get/char/2.cc b/libstdc++-v3/testsuite/22_locale/time_get/get/char/2.cc
|
||||||
|
index 071597b4dd3..22cfdc7415b 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/time_get/get/char/2.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get/char/2.cc
|
||||||
|
@@ -99,5 +99,7 @@ void test02()
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test02();
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get/char/3.cc b/libstdc++-v3/testsuite/22_locale/time_get/get/char/3.cc
|
||||||
|
index ec0f943dd73..6c7c0c60ed0 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/time_get/get/char/3.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get/char/3.cc
|
||||||
|
@@ -351,6 +351,8 @@ test01()
|
||||||
|
int
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
+#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get/char/4.cc b/libstdc++-v3/testsuite/22_locale/time_get/get/char/4.cc
|
||||||
|
index d0619f9de1f..499871bf5b4 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/time_get/get/char/4.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get/char/4.cc
|
||||||
|
@@ -238,6 +238,8 @@ test01()
|
||||||
|
int
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
+#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get/char/71367.cc b/libstdc++-v3/testsuite/22_locale/time_get/get/char/71367.cc
|
||||||
|
index 9171b7d5a17..9c6d1794991 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/time_get/get/char/71367.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get/char/71367.cc
|
||||||
|
@@ -62,6 +62,8 @@ test01()
|
||||||
|
int
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
+#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get/char/71557.cc b/libstdc++-v3/testsuite/22_locale/time_get/get/char/71557.cc
|
||||||
|
index 9d004b05e87..9eeff07aaf3 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/time_get/get/char/71557.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get/char/71557.cc
|
||||||
|
@@ -91,6 +91,8 @@ test01()
|
||||||
|
int
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
+#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/3.cc b/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/3.cc
|
||||||
|
index 45d4edeca00..6e2efad56d4 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/3.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/3.cc
|
||||||
|
@@ -351,6 +351,8 @@ test01()
|
||||||
|
int
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
+#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/4.cc b/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/4.cc
|
||||||
|
index 0518842692f..485c1b41d1b 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/4.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/4.cc
|
||||||
|
@@ -238,6 +238,8 @@ test01()
|
||||||
|
int
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
+#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/71367.cc b/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/71367.cc
|
||||||
|
index 456472601be..180255e948e 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/71367.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/71367.cc
|
||||||
|
@@ -62,6 +62,8 @@ test01()
|
||||||
|
int
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
+#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/71557.cc b/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/71557.cc
|
||||||
|
index 7c5a829fa60..38673aac17b 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/71557.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/71557.cc
|
||||||
|
@@ -91,6 +91,8 @@ test01()
|
||||||
|
int
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
+#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_year/char/6.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_year/char/6.cc
|
||||||
|
index e50afa6aa73..2f326f85afe 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/time_get/get_year/char/6.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get_year/char/6.cc
|
||||||
|
@@ -74,6 +74,8 @@ void test01()
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
+#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/6.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/6.cc
|
||||||
|
index f6e32b7f781..54a921e243b 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/6.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/6.cc
|
||||||
|
@@ -74,6 +74,8 @@ void test01()
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
+#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/ws/char/lwg415.cc b/libstdc++-v3/testsuite/27_io/basic_istream/ws/char/lwg415.cc
|
||||||
|
index fe6980dff29..0a033b81138 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/27_io/basic_istream/ws/char/lwg415.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/27_io/basic_istream/ws/char/lwg415.cc
|
||||||
|
@@ -71,7 +71,9 @@ test03()
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
test02();
|
||||||
|
test03();
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/ws/wchar_t/lwg415.cc b/libstdc++-v3/testsuite/27_io/basic_istream/ws/wchar_t/lwg415.cc
|
||||||
|
index fd040098b40..3adabc60221 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/27_io/basic_istream/ws/wchar_t/lwg415.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/27_io/basic_istream/ws/wchar_t/lwg415.cc
|
||||||
|
@@ -71,7 +71,9 @@ test03()
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
test02();
|
||||||
|
test03();
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/noreplace.cc b/libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/noreplace.cc
|
||||||
|
index e39f5928a1f..22421b158cb 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/noreplace.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/noreplace.cc
|
||||||
|
@@ -15,6 +15,7 @@
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
#if __cpp_lib_ios_noreplace
|
||||||
|
std::ios::openmode noreplace = std::ios::noreplace;
|
||||||
|
#else
|
||||||
|
@@ -26,4 +27,5 @@ int main()
|
||||||
|
of.close();
|
||||||
|
of.open("noreplace", noreplace);
|
||||||
|
VERIFY( ! of.is_open() );
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/27_io/basic_ofstream/open/wchar_t/noreplace.cc b/libstdc++-v3/testsuite/27_io/basic_ofstream/open/wchar_t/noreplace.cc
|
||||||
|
index 77f11865ac4..07748578417 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/27_io/basic_ofstream/open/wchar_t/noreplace.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/27_io/basic_ofstream/open/wchar_t/noreplace.cc
|
||||||
|
@@ -15,6 +15,7 @@
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
#if __cpp_lib_ios_noreplace
|
||||||
|
std::wios::openmode noreplace = std::wios::noreplace;
|
||||||
|
#else
|
||||||
|
@@ -26,4 +27,5 @@ int main()
|
||||||
|
of.close();
|
||||||
|
of.open("noreplace", noreplace);
|
||||||
|
VERIFY( ! of.is_open() );
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/n3168.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/n3168.cc
|
||||||
|
index 12da0b1f011..689ee0ee85b 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/n3168.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/n3168.cc
|
||||||
|
@@ -98,6 +98,8 @@ test02()
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
test02();
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/n3168.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/n3168.cc
|
||||||
|
index 652f46f615c..abe55ca1285 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/n3168.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/n3168.cc
|
||||||
|
@@ -96,6 +96,8 @@ test02()
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
test02();
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/n3168.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/n3168.cc
|
||||||
|
index 8c2fe85db36..92fb45495c1 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/n3168.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/n3168.cc
|
||||||
|
@@ -59,6 +59,8 @@ test02()
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
test02();
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/n3168.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/n3168.cc
|
||||||
|
index 887a9a773d1..efb0c2e878a 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/n3168.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/n3168.cc
|
||||||
|
@@ -59,6 +59,8 @@ test02()
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
test02();
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_time/char/2.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_time/char/2.cc
|
||||||
|
index 39ff1761c55..9583c630fa8 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/time_get/get_time/char/2.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get_time/char/2.cc
|
||||||
|
@@ -91,6 +91,8 @@ static bool ampm_time_format()
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test02();
|
||||||
|
+#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/2.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/2.cc
|
||||||
|
index 228d61f1e41..a1c3265155f 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/2.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/2.cc
|
||||||
|
@@ -91,6 +91,8 @@ static bool ampm_time_format()
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test02();
|
||||||
|
+#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/2.cc b/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/2.cc
|
||||||
|
index adbf7e7e733..4d6b4e2ec96 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/2.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/2.cc
|
||||||
|
@@ -99,5 +99,7 @@ void test02()
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test02();
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/2.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/2.cc
|
||||||
|
index de7a371c1c4..d5fc73d1a36 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/2.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/2.cc
|
||||||
|
@@ -59,7 +59,9 @@ void test02()
|
||||||
|
|
||||||
|
VERIFY( os.good() );
|
||||||
|
VERIFY( buf.sync_called() );
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
VERIFY( buf_tie.sync_called() );
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
@@ -80,7 +82,9 @@ test03()
|
||||||
|
|
||||||
|
VERIFY( os.rdstate() & std::ios_base::eofbit );
|
||||||
|
VERIFY( !buf.sync_called() );
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
VERIFY( !buf_tie.sync_called() );
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/2.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/2.cc
|
||||||
|
index b330be46afa..40b9dfdb61b 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/2.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/2.cc
|
||||||
|
@@ -57,7 +57,9 @@ void test02()
|
||||||
|
|
||||||
|
VERIFY( os.good() );
|
||||||
|
VERIFY( buf.sync_called() );
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
VERIFY( buf_tie.sync_called() );
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
@@ -78,7 +80,9 @@ test03()
|
||||||
|
|
||||||
|
VERIFY( os.rdstate() & std::ios_base::eofbit );
|
||||||
|
VERIFY( !buf.sync_called() );
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
VERIFY( !buf_tie.sync_called() );
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc
|
||||||
|
index 138648f5264..70f651818ba 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc
|
||||||
|
@@ -73,7 +73,9 @@ void test02()
|
||||||
|
// libstdc++/9546
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
test02();
|
||||||
|
+#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/exceptions_badbit_throw.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/exceptions_badbit_throw.cc
|
||||||
|
index 731df74de9f..b6d31711910 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/exceptions_badbit_throw.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/exceptions_badbit_throw.cc
|
||||||
|
@@ -73,7 +73,9 @@ void test02()
|
||||||
|
// libstdc++/9546
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
test02();
|
||||||
|
+#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc
|
||||||
|
index 2eccfdceb94..98d57ff4259 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc
|
||||||
|
@@ -47,6 +47,8 @@ void test01()
|
||||||
|
// libstdc++/9546
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
+#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/exceptions_badbit_throw.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/exceptions_badbit_throw.cc
|
||||||
|
index 92161b22632..9d75c2c69fb 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/exceptions_badbit_throw.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/exceptions_badbit_throw.cc
|
||||||
|
@@ -47,6 +47,8 @@ void test01()
|
||||||
|
// libstdc++/9546
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
+#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/2.cc b/libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/2.cc
|
||||||
|
index d4cd0dc3040..a60acf00b04 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/2.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/2.cc
|
||||||
|
@@ -44,5 +44,7 @@ void test01()
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
diff --git a/libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/2.cc b/libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/2.cc
|
||||||
|
index c639ce54906..5c749922016 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/2.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/2.cc
|
||||||
|
@@ -45,5 +45,7 @@ void test01()
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
+#if __LIBSTDCXX_SO_VERSION >= 8
|
||||||
|
test01();
|
||||||
|
+#endif
|
||||||
|
}
|
72
SOURCES/0022-libstdc++-revert-behavior.patch
Normal file
72
SOURCES/0022-libstdc++-revert-behavior.patch
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12791.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12791.cc
|
||||||
|
index fa740b42b88..5d808ee51ee 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12791.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12791.cc
|
||||||
|
@@ -39,14 +39,14 @@ void test01()
|
||||||
|
const ios_base::iostate good = ios_base::goodbit;
|
||||||
|
ios_base::iostate errorstate = good;
|
||||||
|
|
||||||
|
- iss.str("62/04/71");
|
||||||
|
+ iss.str("60/04/71");
|
||||||
|
iterator_type is_it01(iss);
|
||||||
|
tm time01;
|
||||||
|
errorstate = good;
|
||||||
|
iterator_type ret01 = tim_get.get_date(is_it01, end, iss, errorstate,
|
||||||
|
&time01);
|
||||||
|
VERIFY( errorstate == ios_base::failbit );
|
||||||
|
- VERIFY( *ret01 == '2' );
|
||||||
|
+ VERIFY( *ret01 == '6' );
|
||||||
|
|
||||||
|
iss.str("04/38/71");
|
||||||
|
iterator_type is_it02(iss);
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12791.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12791.cc
|
||||||
|
index 07f4c369e58..c975c8523d8 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12791.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12791.cc
|
||||||
|
@@ -40,14 +40,14 @@ void test01()
|
||||||
|
const ios_base::iostate good = ios_base::goodbit;
|
||||||
|
ios_base::iostate errorstate = good;
|
||||||
|
|
||||||
|
- iss.str(L"62/04/71");
|
||||||
|
+ iss.str(L"60/04/71");
|
||||||
|
iterator_type is_it01(iss);
|
||||||
|
tm time01;
|
||||||
|
errorstate = good;
|
||||||
|
iterator_type ret01 = tim_get.get_date(is_it01, end, iss, errorstate,
|
||||||
|
&time01);
|
||||||
|
VERIFY( errorstate == ios_base::failbit );
|
||||||
|
- VERIFY( *ret01 == L'2' );
|
||||||
|
+ VERIFY( *ret01 == L'6' );
|
||||||
|
|
||||||
|
iss.str(L"04/38/71");
|
||||||
|
iterator_type is_it02(iss);
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_year/char/1.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_year/char/1.cc
|
||||||
|
index e6f53de4a55..c9d9896a6c0 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/time_get/get_year/char/1.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get_year/char/1.cc
|
||||||
|
@@ -76,8 +76,8 @@ void test01()
|
||||||
|
errorstate = good;
|
||||||
|
iterator_type ret03 = tim_get.get_year(is_it03, end, iss, errorstate,
|
||||||
|
&time03);
|
||||||
|
- VERIFY( time03.tm_year == 197 - 1900 );
|
||||||
|
- VERIFY( errorstate == good );
|
||||||
|
+ VERIFY( time03.tm_year == 3 );
|
||||||
|
+ VERIFY( errorstate == ios_base::failbit );
|
||||||
|
VERIFY( *ret03 == 'd' );
|
||||||
|
|
||||||
|
iss.str("71d71");
|
||||||
|
diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/1.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/1.cc
|
||||||
|
index ba95fb91520..e17712098f4 100644
|
||||||
|
--- a/libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/1.cc
|
||||||
|
+++ b/libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/1.cc
|
||||||
|
@@ -76,8 +76,8 @@ void test01()
|
||||||
|
errorstate = good;
|
||||||
|
iterator_type ret03 = tim_get.get_year(is_it03, end, iss, errorstate,
|
||||||
|
&time03);
|
||||||
|
- VERIFY( time03.tm_year == 197 - 1900 );
|
||||||
|
- VERIFY( errorstate == good );
|
||||||
|
+ VERIFY( time03.tm_year == 3 );
|
||||||
|
+ VERIFY( errorstate == ios_base::failbit );
|
||||||
|
VERIFY( *ret03 == L'd' );
|
||||||
|
|
||||||
|
iss.str(L"71d71");
|
95
SOURCES/doxygen-1.7.1-config.patch
Normal file
95
SOURCES/doxygen-1.7.1-config.patch
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
diff -up doxygen-1.7.1/addon/doxywizard/Makefile.in.config doxygen-1.7.1/addon/doxywizard/Makefile.in
|
||||||
|
--- doxygen-1.7.1/addon/doxywizard/Makefile.in.config 2010-05-23 16:51:31.000000000 +0200
|
||||||
|
+++ doxygen-1.7.1/addon/doxywizard/Makefile.in 2010-07-19 13:38:33.000000000 +0200
|
||||||
|
@@ -10,8 +10,6 @@
|
||||||
|
# See the GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
|
||||||
|
-QMAKE=qmake $(MKSPECS)
|
||||||
|
-
|
||||||
|
all: Makefile.doxywizard
|
||||||
|
$(MAKE) -f Makefile.doxywizard
|
||||||
|
|
||||||
|
@@ -29,11 +27,11 @@ distclean: Makefile.doxywizard
|
||||||
|
$(RM) Makefile.doxywizard
|
||||||
|
|
||||||
|
install:
|
||||||
|
- $(INSTTOOL) -d $(INSTALL)/bin
|
||||||
|
- $(INSTTOOL) -m 755 ../../bin/doxywizard $(INSTALL)/bin
|
||||||
|
- $(INSTTOOL) -d $(INSTALL)/$(MAN1DIR)
|
||||||
|
+ $(INSTTOOL) -d $(DESTDIR)$(INSTALL)/bin
|
||||||
|
+ $(INSTTOOL) -m 755 ../../bin/doxywizard $(DESTDIR)$(INSTALL)/bin
|
||||||
|
+ $(INSTTOOL) -d $(DESTDIR)$(INSTALL)/$(MAN1DIR)
|
||||||
|
cat ../../doc/doxywizard.1 | sed -e "s/DATE/$(DATE)/g" -e "s/VERSION/$(VERSION)/g" > doxywizard.1
|
||||||
|
- $(INSTTOOL) -m 644 doxywizard.1 $(INSTALL)/$(MAN1DIR)/doxywizard.1
|
||||||
|
+ $(INSTTOOL) -m 644 doxywizard.1 $(DESTDIR)$(INSTALL)/$(MAN1DIR)/doxywizard.1
|
||||||
|
rm doxywizard.1
|
||||||
|
|
||||||
|
FORCE:
|
||||||
|
diff -up doxygen-1.7.1/configure.config doxygen-1.7.1/configure
|
||||||
|
--- doxygen-1.7.1/configure.config 2010-06-25 11:46:38.000000000 +0200
|
||||||
|
+++ doxygen-1.7.1/configure 2010-07-19 12:03:53.000000000 +0200
|
||||||
|
@@ -268,9 +268,10 @@ if test "$f_wizard" = YES; then
|
||||||
|
if test -z "$QTDIR"; then
|
||||||
|
echo " QTDIR environment variable not set!"
|
||||||
|
echo -n " Checking for Qt..."
|
||||||
|
- for d in /usr/{lib,share,qt}/{qt-4,qt4,qt,qt*,4} /usr; do
|
||||||
|
+ for d in /usr/{lib64,lib,share,qt}/{qt-4,qt4,qt,qt*,4} /usr; do
|
||||||
|
if test -x "$d/bin/qmake"; then
|
||||||
|
QTDIR=$d
|
||||||
|
+ QMAKE=$d/bin/qmake
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
@@ -485,6 +486,8 @@ INSTTOOL = $f_insttool
|
||||||
|
DOXYDOCS = ..
|
||||||
|
DOCDIR = $f_docdir
|
||||||
|
QTDIR = $QTDIR
|
||||||
|
+QMAKE = $QMAKE
|
||||||
|
+MAN1DIR = share/man/man1
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if test "$f_dot" != NO; then
|
||||||
|
diff -up doxygen-1.7.1/Makefile.in.config doxygen-1.7.1/Makefile.in
|
||||||
|
--- doxygen-1.7.1/Makefile.in.config 2009-08-20 21:41:13.000000000 +0200
|
||||||
|
+++ doxygen-1.7.1/Makefile.in 2010-07-19 12:03:53.000000000 +0200
|
||||||
|
@@ -44,8 +44,6 @@ distclean: clean
|
||||||
|
|
||||||
|
DATE=$(shell date "+%B %Y")
|
||||||
|
|
||||||
|
-MAN1DIR = man/man1
|
||||||
|
-
|
||||||
|
install: doxywizard_install
|
||||||
|
$(INSTTOOL) -d $(DESTDIR)/$(INSTALL)/bin
|
||||||
|
$(INSTTOOL) -m 755 bin/doxygen $(DESTDIR)/$(INSTALL)/bin
|
||||||
|
diff -up doxygen-1.7.1/tmake/lib/linux-g++/tmake.conf.config doxygen-1.7.1/tmake/lib/linux-g++/tmake.conf
|
||||||
|
--- doxygen-1.7.1/tmake/lib/linux-g++/tmake.conf.config 2008-12-06 14:16:20.000000000 +0100
|
||||||
|
+++ doxygen-1.7.1/tmake/lib/linux-g++/tmake.conf 2010-07-19 12:03:53.000000000 +0200
|
||||||
|
@@ -11,7 +11,7 @@ TMAKE_CC = gcc
|
||||||
|
TMAKE_CFLAGS = -pipe
|
||||||
|
TMAKE_CFLAGS_WARN_ON = -Wall -W -fno-exceptions
|
||||||
|
TMAKE_CFLAGS_WARN_OFF =
|
||||||
|
-TMAKE_CFLAGS_RELEASE = -O2
|
||||||
|
+TMAKE_CFLAGS_RELEASE = $(RPM_OPT_FLAGS)
|
||||||
|
TMAKE_CFLAGS_DEBUG = -g
|
||||||
|
TMAKE_CFLAGS_SHLIB = -fPIC
|
||||||
|
TMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
|
||||||
|
@@ -27,12 +27,12 @@ TMAKE_CXXFLAGS_YACC = $$TMAKE_CFLAGS_YAC
|
||||||
|
|
||||||
|
TMAKE_INCDIR =
|
||||||
|
TMAKE_LIBDIR =
|
||||||
|
-TMAKE_INCDIR_X11 = /usr/X11R6/include
|
||||||
|
-TMAKE_LIBDIR_X11 = /usr/X11R6/lib
|
||||||
|
-TMAKE_INCDIR_QT = $(QTDIR)/include
|
||||||
|
-TMAKE_LIBDIR_QT = $(QTDIR)/lib
|
||||||
|
-TMAKE_INCDIR_OPENGL = /usr/X11R6/include
|
||||||
|
-TMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
|
||||||
|
+TMAKE_INCDIR_X11 =
|
||||||
|
+TMAKE_LIBDIR_X11 =
|
||||||
|
+TMAKE_INCDIR_QT =
|
||||||
|
+TMAKE_LIBDIR_QT =
|
||||||
|
+TMAKE_INCDIR_OPENGL =
|
||||||
|
+TMAKE_LIBDIR_OPENGL =
|
||||||
|
|
||||||
|
TMAKE_LINK = g++
|
||||||
|
TMAKE_LINK_SHLIB = g++
|
63
SOURCES/doxygen-1.7.5-timestamp.patch
Normal file
63
SOURCES/doxygen-1.7.5-timestamp.patch
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
diff -up doxygen-1.7.5/src/configoptions.cpp.timestamp doxygen-1.7.5/src/configoptions.cpp
|
||||||
|
--- doxygen-1.7.5/src/configoptions.cpp.timestamp 2011-08-03 15:54:50.000000000 +0200
|
||||||
|
+++ doxygen-1.7.5/src/configoptions.cpp 2011-08-23 12:55:56.000000000 +0200
|
||||||
|
@@ -1173,6 +1173,14 @@ void addConfigOptions(Config *cfg)
|
||||||
|
cs->setWidgetType(ConfigString::File);
|
||||||
|
cs->addDependency("GENERATE_HTML");
|
||||||
|
//----
|
||||||
|
+ cb = cfg->addBool(
|
||||||
|
+ "HTML_TIMESTAMP",
|
||||||
|
+ "If the HTML_TIMESTAMP tag is set to YES then the generated HTML\n"
|
||||||
|
+ "documentation will contain the timesstamp.",
|
||||||
|
+ FALSE
|
||||||
|
+ );
|
||||||
|
+ cb->addDependency("GENERATE_HTML");
|
||||||
|
+ //----
|
||||||
|
cs = cfg->addString(
|
||||||
|
"HTML_STYLESHEET",
|
||||||
|
"The HTML_STYLESHEET tag can be used to specify a user-defined cascading\n"
|
||||||
|
diff -up doxygen-1.7.5/src/config.xml.timestamp doxygen-1.7.5/src/config.xml
|
||||||
|
--- doxygen-1.7.5/src/config.xml.timestamp 2011-08-03 15:54:48.000000000 +0200
|
||||||
|
+++ doxygen-1.7.5/src/config.xml 2011-08-23 12:55:56.000000000 +0200
|
||||||
|
@@ -819,6 +819,11 @@ The HTML_FOOTER tag can be used to speci
|
||||||
|
each generated HTML page. If it is left blank doxygen will generate a
|
||||||
|
standard footer.
|
||||||
|
' defval='' depends='GENERATE_HTML'/>
|
||||||
|
+ <option type='bool' id='HTML_TIMESTAMP' docs='
|
||||||
|
+If the HTML_TIMESTAMP tag is set to YES then the generated HTML
|
||||||
|
+documentation will contain the timesstamp.
|
||||||
|
+' defval='' depends='GENERATE_HTML'/>
|
||||||
|
+
|
||||||
|
<option type='string' id='HTML_STYLESHEET' format='file' docs='
|
||||||
|
The HTML_STYLESHEET tag can be used to specify a user-defined cascading
|
||||||
|
style sheet that is used by each HTML page. It can be used to
|
||||||
|
diff -up doxygen-1.7.5/src/htmlgen.cpp.timestamp doxygen-1.7.5/src/htmlgen.cpp
|
||||||
|
--- doxygen-1.7.5/src/htmlgen.cpp.timestamp 2011-08-01 22:10:17.000000000 +0200
|
||||||
|
+++ doxygen-1.7.5/src/htmlgen.cpp 2011-08-23 13:01:16.000000000 +0200
|
||||||
|
@@ -88,7 +88,7 @@ static const char svgpan_script[]=
|
||||||
|
|
||||||
|
static QCString g_header;
|
||||||
|
static QCString g_footer;
|
||||||
|
-
|
||||||
|
+static bool timestamp=false;
|
||||||
|
//------------------------- Pictures for the Tabs ------------------------
|
||||||
|
|
||||||
|
// active
|
||||||
|
@@ -1072,6 +1072,8 @@ void HtmlGenerator::init()
|
||||||
|
{
|
||||||
|
g_footer = defaultHtmlFooter;
|
||||||
|
}
|
||||||
|
+ if (Config_getBool("HTML_TIMESTAMP"))
|
||||||
|
+ timestamp=true;
|
||||||
|
createSubDirs(d);
|
||||||
|
|
||||||
|
QCString fileName=dname+"/tabs.css";
|
||||||
|
@@ -1285,7 +1287,7 @@ QCString HtmlGenerator::writeLogoAsStrin
|
||||||
|
if (timeStamp)
|
||||||
|
{
|
||||||
|
result += theTranslator->trGeneratedAt(
|
||||||
|
- dateToString(TRUE),
|
||||||
|
+ dateToString(timestamp),
|
||||||
|
Config_getString("PROJECT_NAME")
|
||||||
|
);
|
||||||
|
}
|
15
SOURCES/doxygen-1.8.0-rh856725.patch
Normal file
15
SOURCES/doxygen-1.8.0-rh856725.patch
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
--- doxygen-1.8.0/src/configgen.py 2012-01-29 10:12:54.000000000 -0500
|
||||||
|
+++ doxygen-1.8.0/src/configgen.py 2012-08-07 17:38:54.751696536 -0400
|
||||||
|
@@ -34,8 +34,10 @@
|
||||||
|
if type=='bool':
|
||||||
|
if len(adefval)>0:
|
||||||
|
enabled = adefval
|
||||||
|
- else:
|
||||||
|
- enabled = "TRUE" if defval=='1' else "FALSE"
|
||||||
|
+ elif defval=='1':
|
||||||
|
+ enabled = "TRUE"
|
||||||
|
+ else:
|
||||||
|
+ enabled = "FALSE"
|
||||||
|
print " cb = cfg->addBool("
|
||||||
|
print " \"%s\"," % (name)
|
||||||
|
print " \"%s\"," % (docC)
|
58
SOURCES/gcc12-Wno-format-security.patch
Normal file
58
SOURCES/gcc12-Wno-format-security.patch
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
2022-01-07 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* Makefile.tpl (GOCFLAGS, GDCFLAGS): Filter out -Wformat-security.
|
||||||
|
* Makefile.in: Regenerated.
|
||||||
|
|
||||||
|
2017-02-25 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* configure.ac: When adding -Wno-format, also add -Wno-format-security.
|
||||||
|
* configure: Regenerated.
|
||||||
|
|
||||||
|
--- gcc/configure.ac.jj 2017-02-13 12:20:53.000000000 +0100
|
||||||
|
+++ gcc/configure.ac 2017-02-25 12:42:32.859175403 +0100
|
||||||
|
@@ -570,7 +570,7 @@ AC_ARG_ENABLE(build-format-warnings,
|
||||||
|
AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]),
|
||||||
|
[],[enable_build_format_warnings=yes])
|
||||||
|
AS_IF([test $enable_build_format_warnings = no],
|
||||||
|
- [wf_opt=-Wno-format],[wf_opt=])
|
||||||
|
+ [wf_opt="-Wno-format -Wno-format-security"],[wf_opt=])
|
||||||
|
ACX_PROG_CXX_WARNING_OPTS(
|
||||||
|
m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ],
|
||||||
|
[-Wcast-qual $wf_opt])),
|
||||||
|
--- gcc/configure.jj 2017-02-13 12:20:52.000000000 +0100
|
||||||
|
+++ gcc/configure 2017-02-25 12:42:50.041946391 +0100
|
||||||
|
@@ -7077,7 +7077,7 @@ else
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $enable_build_format_warnings = no; then :
|
||||||
|
- wf_opt=-Wno-format
|
||||||
|
+ wf_opt="-Wno-format -Wno-format-security"
|
||||||
|
else
|
||||||
|
wf_opt=
|
||||||
|
fi
|
||||||
|
--- Makefile.tpl.jj 2021-12-30 15:12:42.188164847 +0100
|
||||||
|
+++ Makefile.tpl 2022-01-07 12:06:12.115550714 +0100
|
||||||
|
@@ -447,8 +447,8 @@ LDFLAGS = @LDFLAGS@
|
||||||
|
LIBCFLAGS = $(CFLAGS)
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
|
||||||
|
-GOCFLAGS = $(CFLAGS)
|
||||||
|
-GDCFLAGS = $(CFLAGS)
|
||||||
|
+GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS))
|
||||||
|
+GDCFLAGS = $(filter-out -Wformat-security,$(CFLAGS))
|
||||||
|
|
||||||
|
# Pass additional PGO and LTO compiler options to the PGO build.
|
||||||
|
BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS)
|
||||||
|
--- Makefile.in.jj 2021-12-30 15:12:42.188164847 +0100
|
||||||
|
+++ Makefile.in 2022-01-07 12:06:27.335334561 +0100
|
||||||
|
@@ -444,8 +444,8 @@ LDFLAGS = @LDFLAGS@
|
||||||
|
LIBCFLAGS = $(CFLAGS)
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
|
||||||
|
-GOCFLAGS = $(CFLAGS)
|
||||||
|
-GDCFLAGS = $(CFLAGS)
|
||||||
|
+GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS))
|
||||||
|
+GDCFLAGS = $(filter-out -Wformat-security,$(CFLAGS))
|
||||||
|
|
||||||
|
# Pass additional PGO and LTO compiler options to the PGO build.
|
||||||
|
BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS)
|
49
SOURCES/gcc12-alt-compat-test.patch
Normal file
49
SOURCES/gcc12-alt-compat-test.patch
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
--- gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c.jj 2011-01-03 06:50:42.000000000 -0500
|
||||||
|
+++ gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c 2011-02-18 06:28:53.858200077 -0500
|
||||||
|
@@ -1501,6 +1501,8 @@ generate_random_tests (enum FEATURE feat
|
||||||
|
int i, r;
|
||||||
|
if (len > 'z' - 'a' + 1)
|
||||||
|
abort ();
|
||||||
|
+ if (getenv ("ALT_CXX_UNDER_TEST") != NULL)
|
||||||
|
+ features &= ~FEATURE_VECTOR;
|
||||||
|
memset (e, 0, sizeof (e));
|
||||||
|
r = generate_random ();
|
||||||
|
if ((r & 7) == 0 && !cxx14_vs_cxx17)
|
||||||
|
--- gcc/testsuite/g++.dg/compat/compat.exp.jj 2011-01-03 06:50:42.000000000 -0500
|
||||||
|
+++ gcc/testsuite/g++.dg/compat/compat.exp 2011-02-18 06:30:54.248200398 -0500
|
||||||
|
@@ -116,7 +116,12 @@ if [info exists ALT_CXX_UNDER_TEST] then
|
||||||
|
}
|
||||||
|
|
||||||
|
# Main loop.
|
||||||
|
-foreach src [lsort [find $srcdir/$subdir *_main.C]] {
|
||||||
|
+set tests [lsort [find $srcdir/$subdir *_main.C]]
|
||||||
|
+if { $use_alt != 0 } then {
|
||||||
|
+ set tests [prune $tests $srcdir/$subdir/decimal/*]
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+foreach src $tests {
|
||||||
|
# If we're only testing specific files and this isn't one of them, skip it.
|
||||||
|
if ![runtest_file_p $runtests $src] then {
|
||||||
|
continue
|
||||||
|
--- gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c.jj 2011-01-03 06:49:58.000000000 -0500
|
||||||
|
+++ gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c 2011-02-18 06:27:54.922262671 -0500
|
||||||
|
@@ -1912,6 +1912,8 @@ generate_random_tests (enum FEATURE feat
|
||||||
|
int i, r;
|
||||||
|
if (len > 'z' - 'a' + 1)
|
||||||
|
abort ();
|
||||||
|
+ if (getenv ("ALT_CC_UNDER_TEST") != NULL)
|
||||||
|
+ features &= ~FEATURE_VECTOR;
|
||||||
|
memset (e, 0, sizeof (e));
|
||||||
|
r = generate_random ();
|
||||||
|
if ((r & 7) == 0)
|
||||||
|
--- gcc/testsuite/lib/c-compat.exp.jj 2011-01-03 06:48:38.000000000 -0500
|
||||||
|
+++ gcc/testsuite/lib/c-compat.exp 2011-02-18 06:38:19.124265008 -0500
|
||||||
|
@@ -75,7 +75,7 @@ proc compat_setup_dfp { } {
|
||||||
|
# If there is an alternate compiler, does it support decimal float types?
|
||||||
|
if { $compat_have_dfp == 1 && $compat_use_alt == 1 && $compat_same_alt == 0 } {
|
||||||
|
compat-use-alt-compiler
|
||||||
|
- set compat_have_dfp [check_effective_target_dfprt_nocache]
|
||||||
|
+ set compat_have_dfp 0
|
||||||
|
compat-use-tst-compiler
|
||||||
|
verbose "compat_have_dfp for alt compiler: $compat_have_dfp" 2
|
||||||
|
}
|
20
SOURCES/gcc12-d-shared-libphobos.patch
Normal file
20
SOURCES/gcc12-d-shared-libphobos.patch
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
2019-01-17 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* d-spec.cc (lang_specific_driver): Make -shared-libphobos
|
||||||
|
the default rather than -static-libphobos.
|
||||||
|
|
||||||
|
--- gcc/d/d-spec.cc.jj 2019-01-01 12:37:49.502444257 +0100
|
||||||
|
+++ gcc/d/d-spec.cc 2019-01-17 17:09:45.364949246 +0100
|
||||||
|
@@ -408,9 +408,9 @@ lang_specific_driver (cl_decoded_option
|
||||||
|
/* Add `-lgphobos' if we haven't already done so. */
|
||||||
|
if (phobos_library != PHOBOS_NOLINK)
|
||||||
|
{
|
||||||
|
- /* Default to static linking. */
|
||||||
|
- if (phobos_library != PHOBOS_DYNAMIC)
|
||||||
|
- phobos_library = PHOBOS_STATIC;
|
||||||
|
+ /* Default to shared linking. */
|
||||||
|
+ if (phobos_library != PHOBOS_STATIC)
|
||||||
|
+ phobos_library = PHOBOS_DYNAMIC;
|
||||||
|
|
||||||
|
#ifdef HAVE_LD_STATIC_DYNAMIC
|
||||||
|
if (phobos_library == PHOBOS_STATIC && !static_link)
|
66
SOURCES/gcc12-dg-ice-fixes.patch
Normal file
66
SOURCES/gcc12-dg-ice-fixes.patch
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
--- a/gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-2.c
|
||||||
|
+++ b/gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-2.c
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
/* { dg-additional-options "--param openacc-kernels=decompose" } */
|
||||||
|
|
||||||
|
-/* { dg-additional-options "-fchecking" }
|
||||||
|
+/* { dg-additional-options "-fchecking -fno-report-bug" }
|
||||||
|
{ dg-ice TODO { c++ } }
|
||||||
|
{ dg-prune-output "during GIMPLE pass: omp_oacc_kernels_decompose" } */
|
||||||
|
|
||||||
|
--- a/gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-3.c
|
||||||
|
+++ b/gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-3.c
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
/* { dg-additional-options "--param openacc-kernels=decompose" } */
|
||||||
|
|
||||||
|
-/* { dg-additional-options "-fchecking" }
|
||||||
|
+/* { dg-additional-options "-fchecking -fno-report-bug" }
|
||||||
|
{ dg-ice TODO { c++ } }
|
||||||
|
{ dg-prune-output "during GIMPLE pass: omp_oacc_kernels_decompose" } */
|
||||||
|
|
||||||
|
--- a/gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-4.c
|
||||||
|
+++ b/gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-4.c
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
/* { dg-additional-options "--param openacc-kernels=decompose" } */
|
||||||
|
|
||||||
|
-/* { dg-additional-options "-fchecking" }
|
||||||
|
+/* { dg-additional-options "-fchecking -fno-report-bug" }
|
||||||
|
{ dg-ice TODO { c++ } }
|
||||||
|
{ dg-prune-output "during GIMPLE pass: omp_oacc_kernels_decompose" } */
|
||||||
|
|
||||||
|
diff --git a/gcc/testsuite/g++.dg/cpp0x/vt-88982.C b/gcc/testsuite/g++.dg/cpp0x/vt-88982.C
|
||||||
|
index 7a868233d73..45307a63483 100644
|
||||||
|
--- a/gcc/testsuite/g++.dg/cpp0x/vt-88982.C
|
||||||
|
+++ b/gcc/testsuite/g++.dg/cpp0x/vt-88982.C
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
// PR c++/88982
|
||||||
|
// { dg-do compile { target c++11 } }
|
||||||
|
-// { dg-additional-options "-fchecking" }
|
||||||
|
+// { dg-additional-options "-fchecking -fno-report-bug" }
|
||||||
|
// { dg-ice "tsubst_pack_expansion" }
|
||||||
|
|
||||||
|
template<typename...Ts> struct A {
|
||||||
|
diff --git a/gcc/testsuite/g++.dg/cpp1y/auto-fn61.C b/gcc/testsuite/g++.dg/cpp1y/auto-fn61.C
|
||||||
|
index bed5ea0cfc0..cb235bf891a 100644
|
||||||
|
--- a/gcc/testsuite/g++.dg/cpp1y/auto-fn61.C
|
||||||
|
+++ b/gcc/testsuite/g++.dg/cpp1y/auto-fn61.C
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
// PR c++/88003
|
||||||
|
// { dg-do compile { target c++14 } }
|
||||||
|
-// { dg-additional-options "-fchecking" }
|
||||||
|
+// { dg-additional-options "-fchecking -fno-report-bug" }
|
||||||
|
// { dg-ice "poplevel_class" }
|
||||||
|
|
||||||
|
auto test() {
|
||||||
|
diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda26.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda26.C
|
||||||
|
index 0cdb400d21c..8f17cca31dd 100644
|
||||||
|
--- a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda26.C
|
||||||
|
+++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda26.C
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
// PR c++/87765
|
||||||
|
// { dg-do compile { target c++17 } }
|
||||||
|
-// { dg-additional-options "-fchecking" }
|
||||||
|
+// { dg-additional-options "-fchecking -fno-report-bug" }
|
||||||
|
// { dg-ice "cxx_eval_constant_expression" }
|
||||||
|
|
||||||
|
template <int N>
|
215
SOURCES/gcc12-fortran-fdec-duplicates.patch
Normal file
215
SOURCES/gcc12-fortran-fdec-duplicates.patch
Normal file
@ -0,0 +1,215 @@
|
|||||||
|
From 23b1fcb104c666429451ffaf936f8da5fcd3d43a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mark Eggleston <markeggleston@gcc.gnu.org>
|
||||||
|
Date: Fri, 22 Jan 2021 12:29:47 +0000
|
||||||
|
Subject: [PATCH 01/10] Allow duplicate declarations.
|
||||||
|
|
||||||
|
Enabled by -fdec-duplicates and -fdec.
|
||||||
|
|
||||||
|
Some fixes by Jim MacArthur <jim.macarthur@codethink.co.uk>
|
||||||
|
Addition of -fdec-duplicates by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
---
|
||||||
|
gcc/fortran/lang.opt | 4 ++++
|
||||||
|
gcc/fortran/options.cc | 1 +
|
||||||
|
gcc/fortran/symbol.cc | 21 +++++++++++++++++--
|
||||||
|
.../gfortran.dg/duplicate_type_4.f90 | 13 ++++++++++++
|
||||||
|
.../gfortran.dg/duplicate_type_5.f90 | 13 ++++++++++++
|
||||||
|
.../gfortran.dg/duplicate_type_6.f90 | 13 ++++++++++++
|
||||||
|
.../gfortran.dg/duplicate_type_7.f90 | 13 ++++++++++++
|
||||||
|
.../gfortran.dg/duplicate_type_8.f90 | 12 +++++++++++
|
||||||
|
.../gfortran.dg/duplicate_type_9.f90 | 12 +++++++++++
|
||||||
|
9 files changed, 100 insertions(+), 2 deletions(-)
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/duplicate_type_4.f90
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/duplicate_type_5.f90
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/duplicate_type_6.f90
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/duplicate_type_7.f90
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/duplicate_type_8.f90
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/duplicate_type_9.f90
|
||||||
|
|
||||||
|
diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
|
||||||
|
index 2b1977c523b..52bd522051e 100644
|
||||||
|
--- a/gcc/fortran/lang.opt
|
||||||
|
+++ b/gcc/fortran/lang.opt
|
||||||
|
@@ -469,6 +469,10 @@ Fortran Var(flag_dec_char_conversions)
|
||||||
|
Enable the use of character literals in assignments and data statements
|
||||||
|
for non-character variables.
|
||||||
|
|
||||||
|
+fdec-duplicates
|
||||||
|
+Fortran Var(flag_dec_duplicates)
|
||||||
|
+Allow varibles to be duplicated in the type specification matches.
|
||||||
|
+
|
||||||
|
fdec-include
|
||||||
|
Fortran Var(flag_dec_include)
|
||||||
|
Enable legacy parsing of INCLUDE as statement.
|
||||||
|
diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc
|
||||||
|
index 3a0b98bf1ec..f19ba87f8a0 100644
|
||||||
|
--- a/gcc/fortran/options.cc
|
||||||
|
+++ b/gcc/fortran/options.cc
|
||||||
|
@@ -77,6 +77,7 @@ set_dec_flags (int value)
|
||||||
|
SET_BITFLAG (flag_dec_format_defaults, value, value);
|
||||||
|
SET_BITFLAG (flag_dec_blank_format_item, value, value);
|
||||||
|
SET_BITFLAG (flag_dec_char_conversions, value, value);
|
||||||
|
+ SET_BITFLAG (flag_dec_duplicates, value, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Finalize DEC flags. */
|
||||||
|
diff --git a/gcc/fortran/symbol.cc b/gcc/fortran/symbol.cc
|
||||||
|
index 3b988d1be22..9843175cc2a 100644
|
||||||
|
--- a/gcc/fortran/symbol.cc
|
||||||
|
+++ b/gcc/fortran/symbol.cc
|
||||||
|
@@ -1995,6 +1995,8 @@ gfc_add_type (gfc_symbol *sym, gfc_typespec *ts, locus *where)
|
||||||
|
if (sym->attr.result && type == BT_UNKNOWN && sym->ns->proc_name)
|
||||||
|
type = sym->ns->proc_name->ts.type;
|
||||||
|
|
||||||
|
+ flavor = sym->attr.flavor;
|
||||||
|
+
|
||||||
|
if (type != BT_UNKNOWN && !(sym->attr.function && sym->attr.implicit_type)
|
||||||
|
&& !(gfc_state_stack->previous && gfc_state_stack->previous->previous
|
||||||
|
&& gfc_state_stack->previous->previous->state == COMP_SUBMODULE)
|
||||||
|
@@ -2007,6 +2009,23 @@ gfc_add_type (gfc_symbol *sym, gfc_typespec *ts, locus *where)
|
||||||
|
else if (sym->attr.function && sym->attr.result)
|
||||||
|
gfc_error ("Symbol %qs at %L already has basic type of %s",
|
||||||
|
sym->ns->proc_name->name, where, gfc_basic_typename (type));
|
||||||
|
+ else if (flag_dec_duplicates)
|
||||||
|
+ {
|
||||||
|
+ /* Ignore temporaries and class/procedure names */
|
||||||
|
+ if (sym->ts.type == BT_DERIVED || sym->ts.type == BT_CLASS
|
||||||
|
+ || sym->ts.type == BT_PROCEDURE)
|
||||||
|
+ return false;
|
||||||
|
+
|
||||||
|
+ if (gfc_compare_types (&sym->ts, ts)
|
||||||
|
+ && (flavor == FL_UNKNOWN || flavor == FL_VARIABLE
|
||||||
|
+ || flavor == FL_PROCEDURE))
|
||||||
|
+ {
|
||||||
|
+ return gfc_notify_std (GFC_STD_LEGACY,
|
||||||
|
+ "Symbol '%qs' at %L already has "
|
||||||
|
+ "basic type of %s", sym->name, where,
|
||||||
|
+ gfc_basic_typename (type));
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
else
|
||||||
|
gfc_error ("Symbol %qs at %L already has basic type of %s", sym->name,
|
||||||
|
where, gfc_basic_typename (type));
|
||||||
|
@@ -2020,8 +2039,6 @@ gfc_add_type (gfc_symbol *sym, gfc_typespec *ts, locus *where)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
- flavor = sym->attr.flavor;
|
||||||
|
-
|
||||||
|
if (flavor == FL_PROGRAM || flavor == FL_BLOCK_DATA || flavor == FL_MODULE
|
||||||
|
|| flavor == FL_LABEL
|
||||||
|
|| (flavor == FL_PROCEDURE && sym->attr.subroutine)
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/duplicate_type_4.f90 b/gcc/testsuite/gfortran.dg/duplicate_type_4.f90
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..cdd29ea8846
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/duplicate_type_4.f90
|
||||||
|
@@ -0,0 +1,13 @@
|
||||||
|
+! { dg-do compile }
|
||||||
|
+! { dg-options "-std=f95" }
|
||||||
|
+
|
||||||
|
+! PR fortran/30239
|
||||||
|
+! Check for errors when a symbol gets declared a type twice, even if it
|
||||||
|
+! is the same.
|
||||||
|
+
|
||||||
|
+INTEGER FUNCTION foo ()
|
||||||
|
+ IMPLICIT NONE
|
||||||
|
+ INTEGER :: x
|
||||||
|
+ INTEGER :: x ! { dg-error "basic type of" }
|
||||||
|
+ x = 42
|
||||||
|
+END FUNCTION foo
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/duplicate_type_5.f90 b/gcc/testsuite/gfortran.dg/duplicate_type_5.f90
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..00f931809aa
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/duplicate_type_5.f90
|
||||||
|
@@ -0,0 +1,13 @@
|
||||||
|
+! { dg-do run }
|
||||||
|
+! { dg-options "-fdec" }
|
||||||
|
+!
|
||||||
|
+! Test case contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+
|
||||||
|
+program test
|
||||||
|
+ implicit none
|
||||||
|
+ integer :: x
|
||||||
|
+ integer :: x
|
||||||
|
+ x = 42
|
||||||
|
+ if (x /= 42) stop 1
|
||||||
|
+end program test
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/duplicate_type_6.f90 b/gcc/testsuite/gfortran.dg/duplicate_type_6.f90
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..f0df27e323c
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/duplicate_type_6.f90
|
||||||
|
@@ -0,0 +1,13 @@
|
||||||
|
+! { dg-do run }
|
||||||
|
+! { dg-options "-std=legacy -fdec-duplicates" }
|
||||||
|
+!
|
||||||
|
+! Test case contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+
|
||||||
|
+program test
|
||||||
|
+ implicit none
|
||||||
|
+ integer :: x
|
||||||
|
+ integer :: x
|
||||||
|
+ x = 42
|
||||||
|
+ if (x /= 42) stop 1
|
||||||
|
+end program test
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/duplicate_type_7.f90 b/gcc/testsuite/gfortran.dg/duplicate_type_7.f90
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..f32472ff586
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/duplicate_type_7.f90
|
||||||
|
@@ -0,0 +1,13 @@
|
||||||
|
+! { dg-do run }
|
||||||
|
+! { dg-options "-fdec-duplicates" }
|
||||||
|
+!
|
||||||
|
+! Test case contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+
|
||||||
|
+program test
|
||||||
|
+ implicit none
|
||||||
|
+ integer :: x
|
||||||
|
+ integer :: x! { dg-warning "Legacy Extension" }
|
||||||
|
+ x = 42
|
||||||
|
+ if (x /= 42) stop 1
|
||||||
|
+end program test
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/duplicate_type_8.f90 b/gcc/testsuite/gfortran.dg/duplicate_type_8.f90
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..23c94add179
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/duplicate_type_8.f90
|
||||||
|
@@ -0,0 +1,12 @@
|
||||||
|
+! { dg-do compile }
|
||||||
|
+! { dg-options "-fdec -fno-dec-duplicates" }
|
||||||
|
+!
|
||||||
|
+! Test case contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+
|
||||||
|
+integer function foo ()
|
||||||
|
+ implicit none
|
||||||
|
+ integer :: x
|
||||||
|
+ integer :: x ! { dg-error "basic type of" }
|
||||||
|
+ x = 42
|
||||||
|
+end function foo
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/duplicate_type_9.f90 b/gcc/testsuite/gfortran.dg/duplicate_type_9.f90
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..d5edee4d8ee
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/duplicate_type_9.f90
|
||||||
|
@@ -0,0 +1,12 @@
|
||||||
|
+! { dg-do compile }
|
||||||
|
+! { dg-options "-fdec-duplicates -fno-dec-duplicates" }
|
||||||
|
+!
|
||||||
|
+! Test case contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+
|
||||||
|
+integer function foo ()
|
||||||
|
+ implicit none
|
||||||
|
+ integer :: x
|
||||||
|
+ integer :: x ! { dg-error "basic type of" }
|
||||||
|
+ x = 42
|
||||||
|
+end function foo
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
378
SOURCES/gcc12-fortran-fdec-non-logical-if.patch
Normal file
378
SOURCES/gcc12-fortran-fdec-non-logical-if.patch
Normal file
@ -0,0 +1,378 @@
|
|||||||
|
From cc87ddb841017bb0976b05091733609ee17d7f05 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mark Eggleston <markeggleston@gcc.gnu.org>
|
||||||
|
Date: Fri, 22 Jan 2021 13:15:17 +0000
|
||||||
|
Subject: [PATCH 07/10] Allow non-logical expressions in IF statements
|
||||||
|
|
||||||
|
Use -fdec-non-logical-if to enable feature. Also enabled using -fdec.
|
||||||
|
---
|
||||||
|
gcc/fortran/lang.opt | 4 ++
|
||||||
|
gcc/fortran/options.cc | 1 +
|
||||||
|
gcc/fortran/resolve.cc | 60 ++++++++++++++++---
|
||||||
|
...gical_expressions_if_statements_blocks_1.f | 25 ++++++++
|
||||||
|
...gical_expressions_if_statements_blocks_2.f | 25 ++++++++
|
||||||
|
...gical_expressions_if_statements_blocks_3.f | 25 ++++++++
|
||||||
|
...gical_expressions_if_statements_blocks_4.f | 45 ++++++++++++++
|
||||||
|
...gical_expressions_if_statements_blocks_5.f | 45 ++++++++++++++
|
||||||
|
...gical_expressions_if_statements_blocks_6.f | 45 ++++++++++++++
|
||||||
|
9 files changed, 266 insertions(+), 9 deletions(-)
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f
|
||||||
|
|
||||||
|
diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
|
||||||
|
index 4a269ebb22d..d886c2f33ed 100644
|
||||||
|
--- a/gcc/fortran/lang.opt
|
||||||
|
+++ b/gcc/fortran/lang.opt
|
||||||
|
@@ -502,6 +502,10 @@ fdec-math
|
||||||
|
Fortran Var(flag_dec_math)
|
||||||
|
Enable legacy math intrinsics for compatibility.
|
||||||
|
|
||||||
|
+fdec-non-logical-if
|
||||||
|
+Fortran Var(flag_dec_non_logical_if)
|
||||||
|
+Enable support for non-logical expressions in if statements.
|
||||||
|
+
|
||||||
|
fdec-override-kind
|
||||||
|
Fortran Var(flag_dec_override_kind)
|
||||||
|
Enable support for per variable kind specification.
|
||||||
|
diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc
|
||||||
|
index edbab483b36..a946c86790a 100644
|
||||||
|
--- a/gcc/fortran/options.cc
|
||||||
|
+++ b/gcc/fortran/options.cc
|
||||||
|
@@ -79,6 +79,7 @@ set_dec_flags (int value)
|
||||||
|
SET_BITFLAG (flag_dec_char_conversions, value, value);
|
||||||
|
SET_BITFLAG (flag_dec_duplicates, value, value);
|
||||||
|
SET_BITFLAG (flag_dec_override_kind, value, value);
|
||||||
|
+ SET_BITFLAG (flag_dec_non_logical_if, value, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Finalize DEC flags. */
|
||||||
|
diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc
|
||||||
|
index bc0df0fdb99..07dd039f3bf 100644
|
||||||
|
--- a/gcc/fortran/resolve.cc
|
||||||
|
+++ b/gcc/fortran/resolve.cc
|
||||||
|
@@ -10789,10 +10789,31 @@ gfc_resolve_blocks (gfc_code *b, gfc_namespace *ns)
|
||||||
|
switch (b->op)
|
||||||
|
{
|
||||||
|
case EXEC_IF:
|
||||||
|
- if (t && b->expr1 != NULL
|
||||||
|
- && (b->expr1->ts.type != BT_LOGICAL || b->expr1->rank != 0))
|
||||||
|
- gfc_error ("IF clause at %L requires a scalar LOGICAL expression",
|
||||||
|
- &b->expr1->where);
|
||||||
|
+ if (t && b->expr1 != NULL)
|
||||||
|
+ {
|
||||||
|
+ if (flag_dec_non_logical_if && b->expr1->ts.type != BT_LOGICAL)
|
||||||
|
+ {
|
||||||
|
+ gfc_expr* cast;
|
||||||
|
+ cast = gfc_ne (b->expr1,
|
||||||
|
+ gfc_get_int_expr (1, &gfc_current_locus, 0),
|
||||||
|
+ INTRINSIC_NE);
|
||||||
|
+ if (cast == NULL)
|
||||||
|
+ gfc_internal_error ("gfc_resolve_blocks(): Failed to cast "
|
||||||
|
+ "to LOGICAL in IF");
|
||||||
|
+ b->expr1 = cast;
|
||||||
|
+ if (warn_conversion_extra)
|
||||||
|
+ {
|
||||||
|
+ gfc_warning (OPT_Wconversion_extra, "Non-LOGICAL type in"
|
||||||
|
+ " IF statement condition %L will be true if"
|
||||||
|
+ " it evaluates to nonzero",
|
||||||
|
+ &b->expr1->where);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if ((b->expr1->ts.type != BT_LOGICAL || b->expr1->rank != 0))
|
||||||
|
+ gfc_error ("IF clause at %L requires a scalar LOGICAL "
|
||||||
|
+ "expression", &b->expr1->where);
|
||||||
|
+ }
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EXEC_WHERE:
|
||||||
|
@@ -12093,11 +12114,32 @@ start:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EXEC_IF:
|
||||||
|
- if (t && code->expr1 != NULL
|
||||||
|
- && (code->expr1->ts.type != BT_LOGICAL
|
||||||
|
- || code->expr1->rank != 0))
|
||||||
|
- gfc_error ("IF clause at %L requires a scalar LOGICAL expression",
|
||||||
|
- &code->expr1->where);
|
||||||
|
+ if (t && code->expr1 != NULL)
|
||||||
|
+ {
|
||||||
|
+ if (flag_dec_non_logical_if
|
||||||
|
+ && code->expr1->ts.type != BT_LOGICAL)
|
||||||
|
+ {
|
||||||
|
+ gfc_expr* cast;
|
||||||
|
+ cast = gfc_ne (code->expr1,
|
||||||
|
+ gfc_get_int_expr (1, &gfc_current_locus, 0),
|
||||||
|
+ INTRINSIC_NE);
|
||||||
|
+ if (cast == NULL)
|
||||||
|
+ gfc_internal_error ("gfc_resolve_code(): Failed to cast "
|
||||||
|
+ "to LOGICAL in IF");
|
||||||
|
+ code->expr1 = cast;
|
||||||
|
+ if (warn_conversion_extra)
|
||||||
|
+ {
|
||||||
|
+ gfc_warning (OPT_Wconversion_extra, "Non-LOGICAL type in"
|
||||||
|
+ " IF statement condition %L will be true if"
|
||||||
|
+ " it evaluates to nonzero",
|
||||||
|
+ &code->expr1->where);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (code->expr1->ts.type != BT_LOGICAL || code->expr1->rank != 0)
|
||||||
|
+ gfc_error ("IF clause at %L requires a scalar LOGICAL "
|
||||||
|
+ "expression", &code->expr1->where);
|
||||||
|
+ }
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EXEC_CALL:
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..0101db893ca
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_1.f
|
||||||
|
@@ -0,0 +1,25 @@
|
||||||
|
+! { dg-do run }
|
||||||
|
+! { dg-options "-fdec -Wconversion-extra" }
|
||||||
|
+!
|
||||||
|
+! Allow logical expressions in if statements and blocks
|
||||||
|
+!
|
||||||
|
+! Contributed by Francisco Redondo Marchena <francisco.marchema@codethink.co.uk>
|
||||||
|
+! and Jeff Law <law@redhat.com>
|
||||||
|
+! Modified by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+ PROGRAM logical_exp_if_st_bl
|
||||||
|
+ INTEGER ipos/1/
|
||||||
|
+ INTEGER ineg/0/
|
||||||
|
+
|
||||||
|
+ ! Test non logical variables
|
||||||
|
+ if (ineg) STOP 1 ! { dg-warning "if it evaluates to nonzero" }
|
||||||
|
+ if (0) STOP 2 ! { dg-warning "if it evaluates to nonzero" }
|
||||||
|
+
|
||||||
|
+ ! Test non logical expressions in if statements
|
||||||
|
+ if (MOD(ipos, 1)) STOP 3 ! { dg-warning "if it evaluates to nonzero" }
|
||||||
|
+
|
||||||
|
+ ! Test non logical expressions in if blocks
|
||||||
|
+ if (MOD(2 * ipos, 2)) then ! { dg-warning "if it evaluates to nonzero" }
|
||||||
|
+ STOP 4
|
||||||
|
+ endif
|
||||||
|
+ END
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..876f4e09508
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_2.f
|
||||||
|
@@ -0,0 +1,25 @@
|
||||||
|
+! { dg-do run }
|
||||||
|
+! { dg-options "-fdec-non-logical-if -Wconversion-extra" }
|
||||||
|
+!
|
||||||
|
+! Allow logical expressions in if statements and blocks
|
||||||
|
+!
|
||||||
|
+! Contributed by Francisco Redondo Marchena <francisco.marchema@codethink.co.uk>
|
||||||
|
+! and Jeff Law <law@redhat.com>
|
||||||
|
+! Modified by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+ PROGRAM logical_exp_if_st_bl
|
||||||
|
+ INTEGER ipos/1/
|
||||||
|
+ INTEGER ineg/0/
|
||||||
|
+
|
||||||
|
+ ! Test non logical variables
|
||||||
|
+ if (ineg) STOP 1 ! { dg-warning "if it evaluates to nonzero" }
|
||||||
|
+ if (0) STOP 2 ! { dg-warning "if it evaluates to nonzero" }
|
||||||
|
+
|
||||||
|
+ ! Test non logical expressions in if statements
|
||||||
|
+ if (MOD(ipos, 1)) STOP 3 ! { dg-warning "if it evaluates to nonzero" }
|
||||||
|
+
|
||||||
|
+ ! Test non logical expressions in if blocks
|
||||||
|
+ if (MOD(2 * ipos, 2)) then ! { dg-warning "if it evaluates to nonzero" }
|
||||||
|
+ STOP 4
|
||||||
|
+ endif
|
||||||
|
+ END
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..35cb4c51b8d
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_3.f
|
||||||
|
@@ -0,0 +1,25 @@
|
||||||
|
+! { dg-do compile }
|
||||||
|
+! { dg-options "-fdec -fno-dec-non-logical-if" }
|
||||||
|
+!
|
||||||
|
+! Allow logical expressions in if statements and blocks
|
||||||
|
+!
|
||||||
|
+! Contributed by Francisco Redondo Marchena <francisco.marchema@codethink.co.uk>
|
||||||
|
+! and Jeff Law <law@redhat.com>
|
||||||
|
+! Modified by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+ PROGRAM logical_exp_if_st_bl
|
||||||
|
+ INTEGER ipos/1/
|
||||||
|
+ INTEGER ineg/0/
|
||||||
|
+
|
||||||
|
+ ! Test non logical variables
|
||||||
|
+ if (ineg) STOP 1 ! { dg-error "IF clause at" }
|
||||||
|
+ if (0) STOP 2 ! { dg-error "IF clause at" }
|
||||||
|
+
|
||||||
|
+ ! Test non logical expressions in if statements
|
||||||
|
+ if (MOD(ipos, 1)) STOP 3 ! { dg-error "IF clause at" }
|
||||||
|
+
|
||||||
|
+ ! Test non logical expressions in if blocks
|
||||||
|
+ if (MOD(2 * ipos, 2)) then ! { dg-error "IF clause at" }
|
||||||
|
+ STOP 4
|
||||||
|
+ endif
|
||||||
|
+ END
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..7b60b60827f
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_4.f
|
||||||
|
@@ -0,0 +1,45 @@
|
||||||
|
+! { dg-do run }
|
||||||
|
+! { dg-options "-fdec -Wconversion-extra" }
|
||||||
|
+!
|
||||||
|
+! Contributed by Francisco Redondo Marchena <francisco.marchema@codethink.co.uk>
|
||||||
|
+! and Jeff Law <law@redhat.com>
|
||||||
|
+! Modified by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+ function othersub1()
|
||||||
|
+ integer*4 othersub1
|
||||||
|
+ othersub1 = 9
|
||||||
|
+ end
|
||||||
|
+
|
||||||
|
+ function othersub2()
|
||||||
|
+ integer*4 othersub2
|
||||||
|
+ othersub2 = 0
|
||||||
|
+ end
|
||||||
|
+
|
||||||
|
+ program MAIN
|
||||||
|
+ integer*4 othersub1
|
||||||
|
+ integer*4 othersub2
|
||||||
|
+ integer a /1/
|
||||||
|
+ integer b /2/
|
||||||
|
+
|
||||||
|
+ if (othersub1()) then ! { dg-warning "if it evaluates to nonzero" }
|
||||||
|
+ write(*,*) "OK"
|
||||||
|
+ else
|
||||||
|
+ stop 1
|
||||||
|
+ end if
|
||||||
|
+ if (othersub2()) then ! { dg-warning "if it evaluates to nonzero" }
|
||||||
|
+ stop 2
|
||||||
|
+ else
|
||||||
|
+ write(*,*) "OK"
|
||||||
|
+ end if
|
||||||
|
+ if (a-b) then ! { dg-warning "if it evaluates to nonzero" }
|
||||||
|
+ write(*,*) "OK"
|
||||||
|
+ else
|
||||||
|
+ stop 3
|
||||||
|
+ end if
|
||||||
|
+ if (b-(a+1)) then ! { dg-warning "if it evaluates to nonzero" }
|
||||||
|
+ stop 3
|
||||||
|
+ else
|
||||||
|
+ write(*,*) "OK"
|
||||||
|
+ end if
|
||||||
|
+ end
|
||||||
|
+
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..80336f48ca1
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_5.f
|
||||||
|
@@ -0,0 +1,45 @@
|
||||||
|
+! { dg-do run }
|
||||||
|
+! { dg-options "-fdec-non-logical-if -Wconversion-extra" }
|
||||||
|
+!
|
||||||
|
+! Contributed by Francisco Redondo Marchena <francisco.marchema@codethink.co.uk>
|
||||||
|
+! and Jeff Law <law@redhat.com>
|
||||||
|
+! Modified by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+ function othersub1()
|
||||||
|
+ integer*4 othersub1
|
||||||
|
+ othersub1 = 9
|
||||||
|
+ end
|
||||||
|
+
|
||||||
|
+ function othersub2()
|
||||||
|
+ integer*4 othersub2
|
||||||
|
+ othersub2 = 0
|
||||||
|
+ end
|
||||||
|
+
|
||||||
|
+ program MAIN
|
||||||
|
+ integer*4 othersub1
|
||||||
|
+ integer*4 othersub2
|
||||||
|
+ integer a /1/
|
||||||
|
+ integer b /2/
|
||||||
|
+
|
||||||
|
+ if (othersub1()) then ! { dg-warning "Non-LOGICAL type in IF statement" }
|
||||||
|
+ write(*,*) "OK"
|
||||||
|
+ else
|
||||||
|
+ stop 1
|
||||||
|
+ end if
|
||||||
|
+ if (othersub2()) then ! { dg-warning "Non-LOGICAL type in IF statement" }
|
||||||
|
+ stop 2
|
||||||
|
+ else
|
||||||
|
+ write(*,*) "OK"
|
||||||
|
+ end if
|
||||||
|
+ if (a-b) then ! { dg-warning "Non-LOGICAL type in IF statement" }
|
||||||
|
+ write(*,*) "OK"
|
||||||
|
+ else
|
||||||
|
+ stop 3
|
||||||
|
+ end if
|
||||||
|
+ if (b-(a+1)) then ! { dg-warning "Non-LOGICAL type in IF statement" }
|
||||||
|
+ stop 3
|
||||||
|
+ else
|
||||||
|
+ write(*,*) "OK"
|
||||||
|
+ end if
|
||||||
|
+ end
|
||||||
|
+
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..e1125ca717a
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/dec_logical_expressions_if_statements_blocks_6.f
|
||||||
|
@@ -0,0 +1,45 @@
|
||||||
|
+! { dg-do compile }
|
||||||
|
+! { dg-options "-fdec -fno-dec-non-logical-if" }
|
||||||
|
+!
|
||||||
|
+! Contributed by Francisco Redondo Marchena <francisco.marchema@codethink.co.uk>
|
||||||
|
+! and Jeff Law <law@redhat.com>
|
||||||
|
+! Modified by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+ function othersub1()
|
||||||
|
+ integer*4 othersub1
|
||||||
|
+ othersub1 = 9
|
||||||
|
+ end
|
||||||
|
+
|
||||||
|
+ function othersub2()
|
||||||
|
+ integer*4 othersub2
|
||||||
|
+ othersub2 = 0
|
||||||
|
+ end
|
||||||
|
+
|
||||||
|
+ program MAIN
|
||||||
|
+ integer*4 othersub1
|
||||||
|
+ integer*4 othersub2
|
||||||
|
+ integer a /1/
|
||||||
|
+ integer b /2/
|
||||||
|
+
|
||||||
|
+ if (othersub1()) then ! { dg-error "IF clause at" }
|
||||||
|
+ write(*,*) "OK"
|
||||||
|
+ else
|
||||||
|
+ stop 1
|
||||||
|
+ end if
|
||||||
|
+ if (othersub2()) then ! { dg-error "IF clause at" }
|
||||||
|
+ stop 2
|
||||||
|
+ else
|
||||||
|
+ write(*,*) "OK"
|
||||||
|
+ end if
|
||||||
|
+ if (a-b) then ! { dg-error "IF clause at" }
|
||||||
|
+ write(*,*) "OK"
|
||||||
|
+ else
|
||||||
|
+ stop 3
|
||||||
|
+ end if
|
||||||
|
+ if (b-(a+1)) then ! { dg-error "IF clause at" }
|
||||||
|
+ stop 3
|
||||||
|
+ else
|
||||||
|
+ write(*,*) "OK"
|
||||||
|
+ end if
|
||||||
|
+ end
|
||||||
|
+
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
588
SOURCES/gcc12-fortran-fdec-override-kind.patch
Normal file
588
SOURCES/gcc12-fortran-fdec-override-kind.patch
Normal file
@ -0,0 +1,588 @@
|
|||||||
|
From 786869fd62813e80da9b6545a295d53c36275c19 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mark Eggleston <markeggleston@gcc.gnu.org>
|
||||||
|
Date: Fri, 22 Jan 2021 13:12:14 +0000
|
||||||
|
Subject: [PATCH 06/10] Allow string length and kind to be specified on a per
|
||||||
|
variable basis.
|
||||||
|
|
||||||
|
This allows kind/length to be mixed with array specification in
|
||||||
|
declarations.
|
||||||
|
|
||||||
|
e.g.
|
||||||
|
|
||||||
|
INTEGER*4 x*2, y*8
|
||||||
|
CHARACTER names*20(10)
|
||||||
|
REAL v(100)*8, vv*4(50)
|
||||||
|
|
||||||
|
The per-variable size overrides the kind or length specified for the type.
|
||||||
|
|
||||||
|
Use -fdec-override-kind to enable. Also enabled by -fdec.
|
||||||
|
|
||||||
|
Note: this feature is a merger of two previously separate features.
|
||||||
|
|
||||||
|
Now accepts named constants as kind parameters:
|
||||||
|
|
||||||
|
INTEGER A
|
||||||
|
PARAMETER (A=2)
|
||||||
|
INTEGER B*(A)
|
||||||
|
|
||||||
|
Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
|
||||||
|
Now rejects invalid kind parameters and prints error messages:
|
||||||
|
|
||||||
|
INTEGER X*3
|
||||||
|
|
||||||
|
caused an internal compiler error.
|
||||||
|
|
||||||
|
Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
---
|
||||||
|
gcc/fortran/decl.cc | 156 ++++++++++++++----
|
||||||
|
gcc/fortran/lang.opt | 4 +
|
||||||
|
gcc/fortran/options.cc | 1 +
|
||||||
|
.../dec_mixed_char_array_declaration_1.f | 13 ++
|
||||||
|
.../dec_mixed_char_array_declaration_2.f | 13 ++
|
||||||
|
.../dec_mixed_char_array_declaration_3.f | 13 ++
|
||||||
|
.../gfortran.dg/dec_spec_in_variable_1.f | 31 ++++
|
||||||
|
.../gfortran.dg/dec_spec_in_variable_2.f | 31 ++++
|
||||||
|
.../gfortran.dg/dec_spec_in_variable_3.f | 31 ++++
|
||||||
|
.../gfortran.dg/dec_spec_in_variable_4.f | 14 ++
|
||||||
|
.../gfortran.dg/dec_spec_in_variable_5.f | 19 +++
|
||||||
|
.../gfortran.dg/dec_spec_in_variable_6.f | 19 +++
|
||||||
|
.../gfortran.dg/dec_spec_in_variable_7.f | 15 ++
|
||||||
|
.../gfortran.dg/dec_spec_in_variable_8.f | 14 ++
|
||||||
|
14 files changed, 340 insertions(+), 34 deletions(-)
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f
|
||||||
|
|
||||||
|
diff --git a/gcc/fortran/decl.cc b/gcc/fortran/decl.cc
|
||||||
|
index 5c8c1b7981b..f7dc9d8263d 100644
|
||||||
|
--- a/gcc/fortran/decl.cc
|
||||||
|
+++ b/gcc/fortran/decl.cc
|
||||||
|
@@ -1213,6 +1213,54 @@ syntax:
|
||||||
|
return MATCH_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* This matches the nonstandard kind given after a variable name, like:
|
||||||
|
+ INTEGER x*2, y*4
|
||||||
|
+ The per-variable kind will override any kind given in the type
|
||||||
|
+ declaration.
|
||||||
|
+*/
|
||||||
|
+
|
||||||
|
+static match
|
||||||
|
+match_per_symbol_kind (int *length)
|
||||||
|
+{
|
||||||
|
+ match m;
|
||||||
|
+ gfc_expr *expr = NULL;
|
||||||
|
+
|
||||||
|
+ m = gfc_match_char ('*');
|
||||||
|
+ if (m != MATCH_YES)
|
||||||
|
+ return m;
|
||||||
|
+
|
||||||
|
+ m = gfc_match_small_literal_int (length, NULL);
|
||||||
|
+ if (m == MATCH_YES || m == MATCH_ERROR)
|
||||||
|
+ return m;
|
||||||
|
+
|
||||||
|
+ if (gfc_match_char ('(') == MATCH_NO)
|
||||||
|
+ return MATCH_ERROR;
|
||||||
|
+
|
||||||
|
+ m = gfc_match_expr (&expr);
|
||||||
|
+ if (m == MATCH_YES)
|
||||||
|
+ {
|
||||||
|
+ m = MATCH_ERROR; // Assume error
|
||||||
|
+ if (gfc_expr_check_typed (expr, gfc_current_ns, false))
|
||||||
|
+ {
|
||||||
|
+ if ((expr->expr_type == EXPR_CONSTANT)
|
||||||
|
+ && (expr->ts.type == BT_INTEGER))
|
||||||
|
+ {
|
||||||
|
+ *length = mpz_get_si(expr->value.integer);
|
||||||
|
+ m = MATCH_YES;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (m == MATCH_YES)
|
||||||
|
+ {
|
||||||
|
+ if (gfc_match_char (')') == MATCH_NO)
|
||||||
|
+ m = MATCH_ERROR;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (expr != NULL)
|
||||||
|
+ gfc_free_expr (expr);
|
||||||
|
+ return m;
|
||||||
|
+}
|
||||||
|
|
||||||
|
/* Special subroutine for finding a symbol. Check if the name is found
|
||||||
|
in the current name space. If not, and we're compiling a function or
|
||||||
|
@@ -2443,6 +2491,35 @@ check_function_name (char *name)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
+static match
|
||||||
|
+match_character_length_clause (gfc_charlen **cl, bool *cl_deferred, int elem)
|
||||||
|
+{
|
||||||
|
+ gfc_expr* char_len;
|
||||||
|
+ char_len = NULL;
|
||||||
|
+
|
||||||
|
+ match m = match_char_length (&char_len, cl_deferred, false);
|
||||||
|
+ if (m == MATCH_YES)
|
||||||
|
+ {
|
||||||
|
+ *cl = gfc_new_charlen (gfc_current_ns, NULL);
|
||||||
|
+ (*cl)->length = char_len;
|
||||||
|
+ }
|
||||||
|
+ else if (m == MATCH_NO)
|
||||||
|
+ {
|
||||||
|
+ if (elem > 1
|
||||||
|
+ && (current_ts.u.cl->length == NULL
|
||||||
|
+ || current_ts.u.cl->length->expr_type != EXPR_CONSTANT))
|
||||||
|
+ {
|
||||||
|
+ *cl = gfc_new_charlen (gfc_current_ns, NULL);
|
||||||
|
+ (*cl)->length = gfc_copy_expr (current_ts.u.cl->length);
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ *cl = current_ts.u.cl;
|
||||||
|
+
|
||||||
|
+ *cl_deferred = current_ts.deferred;
|
||||||
|
+ }
|
||||||
|
+ return m;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/* Match a variable name with an optional initializer. When this
|
||||||
|
subroutine is called, a variable is expected to be parsed next.
|
||||||
|
Depending on what is happening at the moment, updates either the
|
||||||
|
@@ -2453,7 +2530,7 @@ variable_decl (int elem)
|
||||||
|
{
|
||||||
|
char name[GFC_MAX_SYMBOL_LEN + 1];
|
||||||
|
static unsigned int fill_id = 0;
|
||||||
|
- gfc_expr *initializer, *char_len;
|
||||||
|
+ gfc_expr *initializer;
|
||||||
|
gfc_array_spec *as;
|
||||||
|
gfc_array_spec *cp_as; /* Extra copy for Cray Pointees. */
|
||||||
|
gfc_charlen *cl;
|
||||||
|
@@ -2462,11 +2539,15 @@ variable_decl (int elem)
|
||||||
|
match m;
|
||||||
|
bool t;
|
||||||
|
gfc_symbol *sym;
|
||||||
|
+ match cl_match;
|
||||||
|
+ match kind_match;
|
||||||
|
+ int overridden_kind;
|
||||||
|
char c;
|
||||||
|
|
||||||
|
initializer = NULL;
|
||||||
|
as = NULL;
|
||||||
|
cp_as = NULL;
|
||||||
|
+ kind_match = MATCH_NO;
|
||||||
|
|
||||||
|
/* When we get here, we've just matched a list of attributes and
|
||||||
|
maybe a type and a double colon. The next thing we expect to see
|
||||||
|
@@ -2519,6 +2600,28 @@ variable_decl (int elem)
|
||||||
|
|
||||||
|
var_locus = gfc_current_locus;
|
||||||
|
|
||||||
|
+
|
||||||
|
+ cl = NULL;
|
||||||
|
+ cl_deferred = false;
|
||||||
|
+ cl_match = MATCH_NO;
|
||||||
|
+
|
||||||
|
+ /* Check for a character length clause before an array clause */
|
||||||
|
+ if (flag_dec_override_kind)
|
||||||
|
+ {
|
||||||
|
+ if (current_ts.type == BT_CHARACTER)
|
||||||
|
+ {
|
||||||
|
+ cl_match = match_character_length_clause (&cl, &cl_deferred, elem);
|
||||||
|
+ if (cl_match == MATCH_ERROR)
|
||||||
|
+ goto cleanup;
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ kind_match = match_per_symbol_kind (&overridden_kind);
|
||||||
|
+ if (kind_match == MATCH_ERROR)
|
||||||
|
+ goto cleanup;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* Now we could see the optional array spec. or character length. */
|
||||||
|
m = gfc_match_array_spec (&as, true, true);
|
||||||
|
if (m == MATCH_ERROR)
|
||||||
|
@@ -2667,40 +2770,12 @@ variable_decl (int elem)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- char_len = NULL;
|
||||||
|
- cl = NULL;
|
||||||
|
- cl_deferred = false;
|
||||||
|
-
|
||||||
|
- if (current_ts.type == BT_CHARACTER)
|
||||||
|
+ /* Second chance for a character length clause */
|
||||||
|
+ if (cl_match == MATCH_NO && current_ts.type == BT_CHARACTER)
|
||||||
|
{
|
||||||
|
- switch (match_char_length (&char_len, &cl_deferred, false))
|
||||||
|
- {
|
||||||
|
- case MATCH_YES:
|
||||||
|
- cl = gfc_new_charlen (gfc_current_ns, NULL);
|
||||||
|
-
|
||||||
|
- cl->length = char_len;
|
||||||
|
- break;
|
||||||
|
-
|
||||||
|
- /* Non-constant lengths need to be copied after the first
|
||||||
|
- element. Also copy assumed lengths. */
|
||||||
|
- case MATCH_NO:
|
||||||
|
- if (elem > 1
|
||||||
|
- && (current_ts.u.cl->length == NULL
|
||||||
|
- || current_ts.u.cl->length->expr_type != EXPR_CONSTANT))
|
||||||
|
- {
|
||||||
|
- cl = gfc_new_charlen (gfc_current_ns, NULL);
|
||||||
|
- cl->length = gfc_copy_expr (current_ts.u.cl->length);
|
||||||
|
- }
|
||||||
|
- else
|
||||||
|
- cl = current_ts.u.cl;
|
||||||
|
-
|
||||||
|
- cl_deferred = current_ts.deferred;
|
||||||
|
-
|
||||||
|
- break;
|
||||||
|
-
|
||||||
|
- case MATCH_ERROR:
|
||||||
|
- goto cleanup;
|
||||||
|
- }
|
||||||
|
+ m = match_character_length_clause (&cl, &cl_deferred, elem);
|
||||||
|
+ if (m == MATCH_ERROR)
|
||||||
|
+ goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The dummy arguments and result of the abreviated form of MODULE
|
||||||
|
@@ -2802,6 +2877,19 @@ variable_decl (int elem)
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (kind_match == MATCH_YES)
|
||||||
|
+ {
|
||||||
|
+ gfc_find_symbol (name, gfc_current_ns, 1, &sym);
|
||||||
|
+ /* sym *must* be found at this point */
|
||||||
|
+ sym->ts.kind = overridden_kind;
|
||||||
|
+ if (gfc_validate_kind (sym->ts.type, sym->ts.kind, true) < 0)
|
||||||
|
+ {
|
||||||
|
+ gfc_error ("Kind %d not supported for type %s at %C",
|
||||||
|
+ sym->ts.kind, gfc_basic_typename (sym->ts.type));
|
||||||
|
+ return MATCH_ERROR;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (!check_function_name (name))
|
||||||
|
{
|
||||||
|
m = MATCH_ERROR;
|
||||||
|
diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
|
||||||
|
index 25cc948699b..4a269ebb22d 100644
|
||||||
|
--- a/gcc/fortran/lang.opt
|
||||||
|
+++ b/gcc/fortran/lang.opt
|
||||||
|
@@ -502,6 +502,10 @@ fdec-math
|
||||||
|
Fortran Var(flag_dec_math)
|
||||||
|
Enable legacy math intrinsics for compatibility.
|
||||||
|
|
||||||
|
+fdec-override-kind
|
||||||
|
+Fortran Var(flag_dec_override_kind)
|
||||||
|
+Enable support for per variable kind specification.
|
||||||
|
+
|
||||||
|
fdec-structure
|
||||||
|
Fortran Var(flag_dec_structure)
|
||||||
|
Enable support for DEC STRUCTURE/RECORD.
|
||||||
|
diff --git a/gcc/fortran/options.cc b/gcc/fortran/options.cc
|
||||||
|
index d6bd36c3a8a..edbab483b36 100644
|
||||||
|
--- a/gcc/fortran/options.cc
|
||||||
|
+++ b/gcc/fortran/options.cc
|
||||||
|
@@ -78,6 +78,7 @@ set_dec_flags (int value)
|
||||||
|
SET_BITFLAG (flag_dec_blank_format_item, value, value);
|
||||||
|
SET_BITFLAG (flag_dec_char_conversions, value, value);
|
||||||
|
SET_BITFLAG (flag_dec_duplicates, value, value);
|
||||||
|
+ SET_BITFLAG (flag_dec_override_kind, value, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Finalize DEC flags. */
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..706ea4112a4
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_1.f
|
||||||
|
@@ -0,0 +1,13 @@
|
||||||
|
+! { dg-do run }
|
||||||
|
+! { dg-options "-fdec" }
|
||||||
|
+!
|
||||||
|
+! Test character declaration with mixed string length and array specification
|
||||||
|
+!
|
||||||
|
+! Contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
|
||||||
|
+! Modified by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+ PROGRAM character_declaration
|
||||||
|
+ CHARACTER ASPEC_SLENGTH*2 (5) /'01','02','03','04','05'/
|
||||||
|
+ CHARACTER SLENGTH_ASPEC(5)*2 /'01','02','03','04','05'/
|
||||||
|
+ if (ASPEC_SLENGTH(3).NE.SLENGTH_ASPEC(3)) STOP 1
|
||||||
|
+ END
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..26d2acf01de
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_2.f
|
||||||
|
@@ -0,0 +1,13 @@
|
||||||
|
+! { dg-do run }
|
||||||
|
+! { dg-options "-fdec-override-kind" }
|
||||||
|
+!
|
||||||
|
+! Test character declaration with mixed string length and array specification
|
||||||
|
+!
|
||||||
|
+! Contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
|
||||||
|
+! Modified by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+ PROGRAM character_declaration
|
||||||
|
+ CHARACTER ASPEC_SLENGTH*2 (5) /'01','02','03','04','05'/
|
||||||
|
+ CHARACTER SLENGTH_ASPEC(5)*2 /'01','02','03','04','05'/
|
||||||
|
+ if (ASPEC_SLENGTH(3).NE.SLENGTH_ASPEC(3)) STOP 1
|
||||||
|
+ END
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..76e4f0bdb93
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/dec_mixed_char_array_declaration_3.f
|
||||||
|
@@ -0,0 +1,13 @@
|
||||||
|
+! { dg-do compile }
|
||||||
|
+! { dg-options "-fdec-override-kind -fno-dec-override-kind" }
|
||||||
|
+!
|
||||||
|
+! Test character declaration with mixed string length and array specification
|
||||||
|
+!
|
||||||
|
+! Contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
|
||||||
|
+! Modified by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+ PROGRAM character_declaration
|
||||||
|
+ CHARACTER ASPEC_SLENGTH*2 (5) /'01','02','03','04','05'/ ! { dg-error "Syntax error" }
|
||||||
|
+ CHARACTER SLENGTH_ASPEC(5)*2 /'01','02','03','04','05'/
|
||||||
|
+ if (ASPEC_SLENGTH(3).NE.SLENGTH_ASPEC(3)) STOP 1 ! { dg-error " Operands of comparison operator" }
|
||||||
|
+ END
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..edd0f5874b7
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_1.f
|
||||||
|
@@ -0,0 +1,31 @@
|
||||||
|
+! { dg-do run }
|
||||||
|
+! { dg-options "-fdec" }
|
||||||
|
+!
|
||||||
|
+! Test kind specification in variable not in type
|
||||||
|
+!
|
||||||
|
+! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+ program spec_in_var
|
||||||
|
+ integer*8 ai*1, bi*4, ci
|
||||||
|
+ real*4 ar*4, br*8, cr
|
||||||
|
+
|
||||||
|
+ ai = 1
|
||||||
|
+ ar = 1.0
|
||||||
|
+ bi = 2
|
||||||
|
+ br = 2.0
|
||||||
|
+ ci = 3
|
||||||
|
+ cr = 3.0
|
||||||
|
+
|
||||||
|
+ if (ai .ne. 1) stop 1
|
||||||
|
+ if (abs(ar - 1.0) > 1.0D-6) stop 2
|
||||||
|
+ if (bi .ne. 2) stop 3
|
||||||
|
+ if (abs(br - 2.0) > 1.0D-6) stop 4
|
||||||
|
+ if (ci .ne. 3) stop 5
|
||||||
|
+ if (abs(cr - 3.0) > 1.0D-6) stop 6
|
||||||
|
+ if (kind(ai) .ne. 1) stop 7
|
||||||
|
+ if (kind(ar) .ne. 4) stop 8
|
||||||
|
+ if (kind(bi) .ne. 4) stop 9
|
||||||
|
+ if (kind(br) .ne. 8) stop 10
|
||||||
|
+ if (kind(ci) .ne. 8) stop 11
|
||||||
|
+ if (kind(cr) .ne. 4) stop 12
|
||||||
|
+ end
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..bfaba584dbb
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_2.f
|
||||||
|
@@ -0,0 +1,31 @@
|
||||||
|
+! { dg-do run }
|
||||||
|
+! { dg-options "-fdec-override-kind" }
|
||||||
|
+!
|
||||||
|
+! Test kind specification in variable not in type
|
||||||
|
+!
|
||||||
|
+! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+ program spec_in_var
|
||||||
|
+ integer*8 ai*1, bi*4, ci
|
||||||
|
+ real*4 ar*4, br*8, cr
|
||||||
|
+
|
||||||
|
+ ai = 1
|
||||||
|
+ ar = 1.0
|
||||||
|
+ bi = 2
|
||||||
|
+ br = 2.0
|
||||||
|
+ ci = 3
|
||||||
|
+ cr = 3.0
|
||||||
|
+
|
||||||
|
+ if (ai .ne. 1) stop 1
|
||||||
|
+ if (abs(ar - 1.0) > 1.0D-6) stop 2
|
||||||
|
+ if (bi .ne. 2) stop 3
|
||||||
|
+ if (abs(br - 2.0) > 1.0D-6) stop 4
|
||||||
|
+ if (ci .ne. 3) stop 5
|
||||||
|
+ if (abs(cr - 3.0) > 1.0D-6) stop 6
|
||||||
|
+ if (kind(ai) .ne. 1) stop 7
|
||||||
|
+ if (kind(ar) .ne. 4) stop 8
|
||||||
|
+ if (kind(bi) .ne. 4) stop 9
|
||||||
|
+ if (kind(br) .ne. 8) stop 10
|
||||||
|
+ if (kind(ci) .ne. 8) stop 11
|
||||||
|
+ if (kind(cr) .ne. 4) stop 12
|
||||||
|
+ end
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..5ff434e7466
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_3.f
|
||||||
|
@@ -0,0 +1,31 @@
|
||||||
|
+! { dg-do compile }
|
||||||
|
+! { dg-options "-fdec -fno-dec-override-kind" }
|
||||||
|
+!
|
||||||
|
+! Test kind specification in variable not in type
|
||||||
|
+!
|
||||||
|
+! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+ program spec_in_var
|
||||||
|
+ integer*8 ai*1, bi*4, ci ! { dg-error "Syntax error" }
|
||||||
|
+ real*4 ar*4, br*8, cr ! { dg-error "Syntax error" }
|
||||||
|
+
|
||||||
|
+ ai = 1
|
||||||
|
+ ar = 1.0
|
||||||
|
+ bi = 2
|
||||||
|
+ br = 2.0
|
||||||
|
+ ci = 3
|
||||||
|
+ cr = 3.0
|
||||||
|
+
|
||||||
|
+ if (ai .ne. 1) stop 1
|
||||||
|
+ if (abs(ar - 1.0) > 1.0D-6) stop 2
|
||||||
|
+ if (bi .ne. 2) stop 3
|
||||||
|
+ if (abs(br - 2.0) > 1.0D-6) stop 4
|
||||||
|
+ if (ci .ne. 3) stop 5
|
||||||
|
+ if (abs(cr - 3.0) > 1.0D-6) stop 6
|
||||||
|
+ if (kind(ai) .ne. 1) stop 7
|
||||||
|
+ if (kind(ar) .ne. 4) stop 8
|
||||||
|
+ if (kind(bi) .ne. 4) stop 9
|
||||||
|
+ if (kind(br) .ne. 8) stop 10
|
||||||
|
+ if (kind(ci) .ne. 8) stop 11
|
||||||
|
+ if (kind(cr) .ne. 4) stop 12
|
||||||
|
+ end
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..c01980e8b9d
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_4.f
|
||||||
|
@@ -0,0 +1,14 @@
|
||||||
|
+! { dg-do compile }
|
||||||
|
+!
|
||||||
|
+! Test kind specification in variable not in type. The per variable
|
||||||
|
+! kind specification is not enabled so these should fail
|
||||||
|
+!
|
||||||
|
+! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+ program spec_in_var
|
||||||
|
+ integer a
|
||||||
|
+ parameter(a=2)
|
||||||
|
+ integer b*(a) ! { dg-error "Syntax error" }
|
||||||
|
+ real c*(8) ! { dg-error "Syntax error" }
|
||||||
|
+ logical d*1_1 ! { dg-error "Syntax error" }
|
||||||
|
+ end
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..e2f39da3f4f
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_5.f
|
||||||
|
@@ -0,0 +1,19 @@
|
||||||
|
+! { dg-do run }
|
||||||
|
+! { dg-options "-fdec-override-kind" }
|
||||||
|
+!
|
||||||
|
+! Test kind specification in variable not in type
|
||||||
|
+!
|
||||||
|
+! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+ program spec_in_var
|
||||||
|
+ integer a
|
||||||
|
+ parameter(a=2)
|
||||||
|
+ integer b*(a)
|
||||||
|
+ real c*(8)
|
||||||
|
+ logical d*(1_1)
|
||||||
|
+ character e*(a)
|
||||||
|
+ if (kind(b).ne.2) stop 1
|
||||||
|
+ if (kind(c).ne.8) stop 2
|
||||||
|
+ if (kind(d).ne.1) stop 3
|
||||||
|
+ if (len(e).ne.2) stop 4
|
||||||
|
+ end
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..569747874e3
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_6.f
|
||||||
|
@@ -0,0 +1,19 @@
|
||||||
|
+! { dg-do run }
|
||||||
|
+! { dg-options "-fdec" }
|
||||||
|
+!
|
||||||
|
+! Test kind specification in variable not in type
|
||||||
|
+!
|
||||||
|
+! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+ program spec_in_var
|
||||||
|
+ integer a
|
||||||
|
+ parameter(a=2)
|
||||||
|
+ integer b*(a)
|
||||||
|
+ real c*(8)
|
||||||
|
+ logical d*(1_1)
|
||||||
|
+ character e*(a)
|
||||||
|
+ if (kind(b).ne.2) stop 1
|
||||||
|
+ if (kind(c).ne.8) stop 2
|
||||||
|
+ if (kind(d).ne.1) stop 3
|
||||||
|
+ if (len(e).ne.2) stop 4
|
||||||
|
+ end
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..b975bfd15c5
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_7.f
|
||||||
|
@@ -0,0 +1,15 @@
|
||||||
|
+! { dg-do compile }
|
||||||
|
+! { dg-options "-fdec -fno-dec-override-kind" }
|
||||||
|
+!
|
||||||
|
+! Test kind specification in variable not in type as the per variable
|
||||||
|
+! kind specification is not enables these should fail
|
||||||
|
+!
|
||||||
|
+! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+ program spec_in_var
|
||||||
|
+ integer a
|
||||||
|
+ parameter(a=2)
|
||||||
|
+ integer b*(a) ! { dg-error "Syntax error" }
|
||||||
|
+ real c*(8) ! { dg-error "Syntax error" }
|
||||||
|
+ logical d*1_1 ! { dg-error "Syntax error" }
|
||||||
|
+ end
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..85732e0bd85
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/dec_spec_in_variable_8.f
|
||||||
|
@@ -0,0 +1,14 @@
|
||||||
|
+! { dg-do compile }
|
||||||
|
+! { dg-options "-fdec" }
|
||||||
|
+!
|
||||||
|
+! Check that invalid kind values are rejected.
|
||||||
|
+!
|
||||||
|
+! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+ program spec_in_var
|
||||||
|
+ integer a
|
||||||
|
+ parameter(a=3)
|
||||||
|
+ integer b*(a) ! { dg-error "Kind 3 not supported" }
|
||||||
|
+ real c*(78) ! { dg-error "Kind 78 not supported" }
|
||||||
|
+ logical d*(*) ! { dg-error "Invalid character" }
|
||||||
|
+ end
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
305
SOURCES/gcc12-fortran-flogical-as-integer.patch
Normal file
305
SOURCES/gcc12-fortran-flogical-as-integer.patch
Normal file
@ -0,0 +1,305 @@
|
|||||||
|
From 9b45f3063dfd2b893e7963a4828c1b0afecdc68a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mark Eggleston <markeggleston@gcc.gnu.org>
|
||||||
|
Date: Fri, 22 Jan 2021 12:41:46 +0000
|
||||||
|
Subject: [PATCH 02/10] Convert LOGICAL to INTEGER for arithmetic ops, and vice
|
||||||
|
versa
|
||||||
|
|
||||||
|
We allow converting LOGICAL types to INTEGER when doing arithmetic
|
||||||
|
operations, and converting INTEGER types to LOGICAL for use in
|
||||||
|
boolean operations.
|
||||||
|
|
||||||
|
This feature is enabled with the -flogical-as-integer flag.
|
||||||
|
|
||||||
|
Note: using this feature will disable bitwise logical operations enabled by
|
||||||
|
-fdec.
|
||||||
|
---
|
||||||
|
gcc/fortran/lang.opt | 4 ++
|
||||||
|
gcc/fortran/resolve.cc | 55 ++++++++++++++++++-
|
||||||
|
.../logical_to_integer_and_vice_versa_1.f | 31 +++++++++++
|
||||||
|
.../logical_to_integer_and_vice_versa_2.f | 31 +++++++++++
|
||||||
|
.../logical_to_integer_and_vice_versa_3.f | 33 +++++++++++
|
||||||
|
.../logical_to_integer_and_vice_versa_4.f | 33 +++++++++++
|
||||||
|
6 files changed, 186 insertions(+), 1 deletion(-)
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f
|
||||||
|
create mode 100644 gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f
|
||||||
|
|
||||||
|
diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
|
||||||
|
index 52bd522051e..c4da248f07c 100644
|
||||||
|
--- a/gcc/fortran/lang.opt
|
||||||
|
+++ b/gcc/fortran/lang.opt
|
||||||
|
@@ -497,6 +497,10 @@ fdec-static
|
||||||
|
Fortran Var(flag_dec_static)
|
||||||
|
Enable DEC-style STATIC and AUTOMATIC attributes.
|
||||||
|
|
||||||
|
+flogical-as-integer
|
||||||
|
+Fortran Var(flag_logical_as_integer)
|
||||||
|
+Convert from integer to logical or logical to integer for arithmetic operations.
|
||||||
|
+
|
||||||
|
fdefault-double-8
|
||||||
|
Fortran Var(flag_default_double)
|
||||||
|
Set the default double precision kind to an 8 byte wide type.
|
||||||
|
diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc
|
||||||
|
index c075d0fa0c4..4b90cb59902 100644
|
||||||
|
--- a/gcc/fortran/resolve.cc
|
||||||
|
+++ b/gcc/fortran/resolve.cc
|
||||||
|
@@ -3915,7 +3915,6 @@ lookup_uop_fuzzy (const char *op, gfc_symtree *uop)
|
||||||
|
return gfc_closest_fuzzy_match (op, candidates);
|
||||||
|
}
|
||||||
|
|
||||||
|
-
|
||||||
|
/* Callback finding an impure function as an operand to an .and. or
|
||||||
|
.or. expression. Remember the last function warned about to
|
||||||
|
avoid double warnings when recursing. */
|
||||||
|
@@ -3975,6 +3974,22 @@ convert_hollerith_to_character (gfc_expr *e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* If E is a logical, convert it to an integer and issue a warning
|
||||||
|
+ for the conversion. */
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+convert_integer_to_logical (gfc_expr *e)
|
||||||
|
+{
|
||||||
|
+ if (e->ts.type == BT_INTEGER)
|
||||||
|
+ {
|
||||||
|
+ /* Convert to LOGICAL */
|
||||||
|
+ gfc_typespec t;
|
||||||
|
+ t.type = BT_LOGICAL;
|
||||||
|
+ t.kind = 1;
|
||||||
|
+ gfc_convert_type_warn (e, &t, 2, 1);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/* Convert to numeric and issue a warning for the conversion. */
|
||||||
|
|
||||||
|
static void
|
||||||
|
@@ -3987,6 +4002,22 @@ convert_to_numeric (gfc_expr *a, gfc_expr *b)
|
||||||
|
gfc_convert_type_warn (a, &t, 2, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* If E is a logical, convert it to an integer and issue a warning
|
||||||
|
+ for the conversion. */
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+convert_logical_to_integer (gfc_expr *e)
|
||||||
|
+{
|
||||||
|
+ if (e->ts.type == BT_LOGICAL)
|
||||||
|
+ {
|
||||||
|
+ /* Convert to INTEGER */
|
||||||
|
+ gfc_typespec t;
|
||||||
|
+ t.type = BT_INTEGER;
|
||||||
|
+ t.kind = 1;
|
||||||
|
+ gfc_convert_type_warn (e, &t, 2, 1);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/* Resolve an operator expression node. This can involve replacing the
|
||||||
|
operation with a user defined function call. */
|
||||||
|
|
||||||
|
@@ -4072,6 +4103,12 @@ resolve_operator (gfc_expr *e)
|
||||||
|
case INTRINSIC_TIMES:
|
||||||
|
case INTRINSIC_DIVIDE:
|
||||||
|
case INTRINSIC_POWER:
|
||||||
|
+ if (flag_logical_as_integer)
|
||||||
|
+ {
|
||||||
|
+ convert_logical_to_integer (op1);
|
||||||
|
+ convert_logical_to_integer (op2);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (gfc_numeric_ts (&op1->ts) && gfc_numeric_ts (&op2->ts))
|
||||||
|
{
|
||||||
|
gfc_type_convert_binary (e, 1);
|
||||||
|
@@ -4108,6 +4145,13 @@ resolve_operator (gfc_expr *e)
|
||||||
|
case INTRINSIC_OR:
|
||||||
|
case INTRINSIC_EQV:
|
||||||
|
case INTRINSIC_NEQV:
|
||||||
|
+
|
||||||
|
+ if (flag_logical_as_integer)
|
||||||
|
+ {
|
||||||
|
+ convert_integer_to_logical (op1);
|
||||||
|
+ convert_integer_to_logical (op2);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (op1->ts.type == BT_LOGICAL && op2->ts.type == BT_LOGICAL)
|
||||||
|
{
|
||||||
|
e->ts.type = BT_LOGICAL;
|
||||||
|
@@ -4158,6 +4202,9 @@ resolve_operator (gfc_expr *e)
|
||||||
|
goto simplify_op;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (flag_logical_as_integer)
|
||||||
|
+ convert_integer_to_logical (op1);
|
||||||
|
+
|
||||||
|
if (op1->ts.type == BT_LOGICAL)
|
||||||
|
{
|
||||||
|
e->ts.type = BT_LOGICAL;
|
||||||
|
@@ -4198,6 +4245,12 @@ resolve_operator (gfc_expr *e)
|
||||||
|
convert_hollerith_to_character (op2);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (flag_logical_as_integer)
|
||||||
|
+ {
|
||||||
|
+ convert_logical_to_integer (op1);
|
||||||
|
+ convert_logical_to_integer (op2);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (op1->ts.type == BT_CHARACTER && op2->ts.type == BT_CHARACTER
|
||||||
|
&& op1->ts.kind == op2->ts.kind)
|
||||||
|
{
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..938a91d9e9a
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_1.f
|
||||||
|
@@ -0,0 +1,31 @@
|
||||||
|
+! { dg-do run }
|
||||||
|
+! { dg-options "-std=legacy -flogical-as-integer" }
|
||||||
|
+!
|
||||||
|
+! Test conversion between logical and integer for logical operators
|
||||||
|
+!
|
||||||
|
+! Test case contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
|
||||||
|
+! Modified for -flogical-as-integer by Mark Eggleston
|
||||||
|
+! <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+ PROGRAM logical_integer_conversion
|
||||||
|
+ LOGICAL lpos /.true./
|
||||||
|
+ INTEGER ineg/0/
|
||||||
|
+ INTEGER ires
|
||||||
|
+ LOGICAL lres
|
||||||
|
+
|
||||||
|
+ ! Test Logicals converted to Integers
|
||||||
|
+ if ((lpos.AND.ineg).EQ.1) STOP 3
|
||||||
|
+ if ((ineg.AND.lpos).NE.0) STOP 4
|
||||||
|
+ ires = (.true..AND.0)
|
||||||
|
+ if (ires.NE.0) STOP 5
|
||||||
|
+ ires = (1.AND..false.)
|
||||||
|
+ if (ires.EQ.1) STOP 6
|
||||||
|
+
|
||||||
|
+ ! Test Integers converted to Logicals
|
||||||
|
+ if (lpos.EQ.ineg) STOP 7
|
||||||
|
+ if (ineg.EQ.lpos) STOP 8
|
||||||
|
+ lres = (.true..EQ.0)
|
||||||
|
+ if (lres) STOP 9
|
||||||
|
+ lres = (1.EQ..false.)
|
||||||
|
+ if (lres) STOP 10
|
||||||
|
+ END
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..9f146202ba5
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_2.f
|
||||||
|
@@ -0,0 +1,31 @@
|
||||||
|
+! { dg-do compile }
|
||||||
|
+! { dg-options "-std=legacy -flogical-as-integer -fno-logical-as-integer" }
|
||||||
|
+!
|
||||||
|
+! Based on logical_to_integer_and_vice_versa_1.f but with option disabled
|
||||||
|
+! to test for error messages.
|
||||||
|
+!
|
||||||
|
+! Test case contributed by by Mark Eggleston <mark.eggleston@codethink.com>
|
||||||
|
+!
|
||||||
|
+!
|
||||||
|
+ PROGRAM logical_integer_conversion
|
||||||
|
+ LOGICAL lpos /.true./
|
||||||
|
+ INTEGER ineg/0/
|
||||||
|
+ INTEGER ires
|
||||||
|
+ LOGICAL lres
|
||||||
|
+
|
||||||
|
+ ! Test Logicals converted to Integers
|
||||||
|
+ if ((lpos.AND.ineg).EQ.1) STOP 3 ! { dg-error "Operands of logical operator" }
|
||||||
|
+ if ((ineg.AND.lpos).NE.0) STOP 4 ! { dg-error "Operands of logical operator" }
|
||||||
|
+ ires = (.true..AND.0) ! { dg-error "Operands of logical operator" }
|
||||||
|
+ if (ires.NE.0) STOP 5
|
||||||
|
+ ires = (1.AND..false.) ! { dg-error "Operands of logical operator" }
|
||||||
|
+ if (ires.EQ.1) STOP 6
|
||||||
|
+
|
||||||
|
+ ! Test Integers converted to Logicals
|
||||||
|
+ if (lpos.EQ.ineg) STOP 7 ! { dg-error "Operands of comparison operator" }
|
||||||
|
+ if (ineg.EQ.lpos) STOP 8 ! { dg-error "Operands of comparison operator" }
|
||||||
|
+ lres = (.true..EQ.0) ! { dg-error "Operands of comparison operator" }
|
||||||
|
+ if (lres) STOP 9
|
||||||
|
+ lres = (1.EQ..false.) ! { dg-error "Operands of comparison operator" }
|
||||||
|
+ if (lres) STOP 10
|
||||||
|
+ END
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..446873eb2dc
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_3.f
|
||||||
|
@@ -0,0 +1,33 @@
|
||||||
|
+! { dg-do compile }
|
||||||
|
+! { dg-options "-std=legacy -flogical-as-integer" }
|
||||||
|
+!
|
||||||
|
+! Test conversion between logical and integer for logical operators
|
||||||
|
+!
|
||||||
|
+ program test
|
||||||
|
+ logical f /.false./
|
||||||
|
+ logical t /.true./
|
||||||
|
+ real x
|
||||||
|
+
|
||||||
|
+ x = 7.7
|
||||||
|
+ x = x + t*3.0
|
||||||
|
+ if (abs(x - 10.7).gt.0.00001) stop 1
|
||||||
|
+ x = x + .false.*5.0
|
||||||
|
+ if (abs(x - 10.7).gt.0.00001) stop 2
|
||||||
|
+ x = x - .true.*5.0
|
||||||
|
+ if (abs(x - 5.7).gt.0.00001) stop 3
|
||||||
|
+ x = x + t
|
||||||
|
+ if (abs(x - 6.7).gt.0.00001) stop 4
|
||||||
|
+ x = x + f
|
||||||
|
+ if (abs(x - 6.7).gt.0.00001) stop 5
|
||||||
|
+ x = x - t
|
||||||
|
+ if (abs(x - 5.7).gt.0.00001) stop 6
|
||||||
|
+ x = x - f
|
||||||
|
+ if (abs(x - 5.7).gt.0.00001) stop 7
|
||||||
|
+ x = x**.true.
|
||||||
|
+ if (abs(x - 5.7).gt.0.00001) stop 8
|
||||||
|
+ x = x**.false.
|
||||||
|
+ if (abs(x - 1.0).gt.0.00001) stop 9
|
||||||
|
+ x = x/t
|
||||||
|
+ if (abs(x - 1.0).gt.0.00001) stop 10
|
||||||
|
+ if ((x/.false.).le.huge(x)) stop 11
|
||||||
|
+ end
|
||||||
|
diff --git a/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..4301a4988d8
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gfortran.dg/logical_to_integer_and_vice_versa_4.f
|
||||||
|
@@ -0,0 +1,33 @@
|
||||||
|
+! { dg-do compile }
|
||||||
|
+! { dg-options "-std=legacy -flogical-as-integer -fno-logical-as-integer" }
|
||||||
|
+!
|
||||||
|
+! Test conversion between logical and integer for logical operators
|
||||||
|
+!
|
||||||
|
+ program test
|
||||||
|
+ logical f /.false./
|
||||||
|
+ logical t /.true./
|
||||||
|
+ real x
|
||||||
|
+
|
||||||
|
+ x = 7.7
|
||||||
|
+ x = x + t*3.0 ! { dg-error "Operands of binary numeric" }
|
||||||
|
+ if (abs(x - 10.7).gt.0.00001) stop 1
|
||||||
|
+ x = x + .false.*5.0 ! { dg-error "Operands of binary numeric" }
|
||||||
|
+ if (abs(x - 10.7).gt.0.00001) stop 2
|
||||||
|
+ x = x - .true.*5.0 ! { dg-error "Operands of binary numeric" }
|
||||||
|
+ if (abs(x - 5.7).gt.0.00001) stop 3
|
||||||
|
+ x = x + t ! { dg-error "Operands of binary numeric" }
|
||||||
|
+ if (abs(x - 6.7).gt.0.00001) stop 4
|
||||||
|
+ x = x + f ! { dg-error "Operands of binary numeric" }
|
||||||
|
+ if (abs(x - 6.7).gt.0.00001) stop 5
|
||||||
|
+ x = x - t ! { dg-error "Operands of binary numeric" }
|
||||||
|
+ if (abs(x - 5.7).gt.0.00001) stop 6
|
||||||
|
+ x = x - f ! { dg-error "Operands of binary numeric" }
|
||||||
|
+ if (abs(x - 5.7).gt.0.00001) stop 7
|
||||||
|
+ x = x**.true. ! { dg-error "Operands of binary numeric" }
|
||||||
|
+ if (abs(x - 5.7).gt.0.00001) stop 8
|
||||||
|
+ x = x**.false. ! { dg-error "Operands of binary numeric" }
|
||||||
|
+ if (abs(x - 1.0).gt.0.00001) stop 9
|
||||||
|
+ x = x/t ! { dg-error "Operands of binary numeric" }
|
||||||
|
+ if (abs(x - 1.0).gt.0.00001) stop 10
|
||||||
|
+ if ((x/.false.).le.huge(x)) stop 11 ! { dg-error "Operands of binary numeric" }
|
||||||
|
+ end
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
126
SOURCES/gcc12-hack.patch
Normal file
126
SOURCES/gcc12-hack.patch
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
--- libada/Makefile.in.jj 2019-01-09 13:01:18.015608205 +0100
|
||||||
|
+++ libada/Makefile.in 2019-01-11 18:16:23.441726931 +0100
|
||||||
|
@@ -71,18 +71,40 @@ version := $(shell @get_gcc_base_ver@ $(
|
||||||
|
libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR)
|
||||||
|
ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
|
||||||
|
|
||||||
|
+DEFAULTMULTIFLAGS :=
|
||||||
|
+ifeq ($(MULTISUBDIR),)
|
||||||
|
+targ:=$(subst -, ,$(target))
|
||||||
|
+arch:=$(word 1,$(targ))
|
||||||
|
+ifeq ($(words $(targ)),2)
|
||||||
|
+osys:=$(word 2,$(targ))
|
||||||
|
+else
|
||||||
|
+osys:=$(word 3,$(targ))
|
||||||
|
+endif
|
||||||
|
+ifeq ($(strip $(filter-out i%86 x86_64 powerpc% ppc% s390% sparc% linux%, $(arch) $(osys))),)
|
||||||
|
+ifeq ($(shell $(CC) $(CFLAGS) -print-multi-os-directory),../lib64)
|
||||||
|
+DEFAULTMULTIFLAGS := -m64
|
||||||
|
+else
|
||||||
|
+ifeq ($(strip $(filter-out s390%, $(arch))),)
|
||||||
|
+DEFAULTMULTIFLAGS := -m31
|
||||||
|
+else
|
||||||
|
+DEFAULTMULTIFLAGS := -m32
|
||||||
|
+endif
|
||||||
|
+endif
|
||||||
|
+endif
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
# exeext should not be used because it's the *host* exeext. We're building
|
||||||
|
# a *target* library, aren't we?!? Likewise for CC. Still, provide bogus
|
||||||
|
# definitions just in case something slips through the safety net provided
|
||||||
|
# by recursive make invocations in gcc/ada/Makefile.in
|
||||||
|
LIBADA_FLAGS_TO_PASS = \
|
||||||
|
"MAKEOVERRIDES=" \
|
||||||
|
- "LDFLAGS=$(LDFLAGS)" \
|
||||||
|
+ "LDFLAGS=$(LDFLAGS) $(DEFAULTMULTIFLAGS)" \
|
||||||
|
"LN_S=$(LN_S)" \
|
||||||
|
"SHELL=$(SHELL)" \
|
||||||
|
- "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \
|
||||||
|
- "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \
|
||||||
|
- "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \
|
||||||
|
+ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
|
||||||
|
+ "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
|
||||||
|
+ "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
|
||||||
|
"PICFLAG_FOR_TARGET=$(PICFLAG)" \
|
||||||
|
"THREAD_KIND=$(THREAD_KIND)" \
|
||||||
|
"TRACE=$(TRACE)" \
|
||||||
|
@@ -93,7 +115,7 @@ LIBADA_FLAGS_TO_PASS = \
|
||||||
|
"exeext=.exeext.should.not.be.used " \
|
||||||
|
'CC=the.host.compiler.should.not.be.needed' \
|
||||||
|
"GCC_FOR_TARGET=$(CC)" \
|
||||||
|
- "CFLAGS=$(CFLAGS)"
|
||||||
|
+ "CFLAGS=$(CFLAGS) $(DEFAULTMULTIFLAGS)"
|
||||||
|
|
||||||
|
.PHONY: libada gnatlib gnatlib-shared gnatlib-sjlj gnatlib-zcx osconstool
|
||||||
|
|
||||||
|
--- config-ml.in.jj 2019-01-09 12:50:16.646501448 +0100
|
||||||
|
+++ config-ml.in 2019-01-11 18:16:23.442726914 +0100
|
||||||
|
@@ -511,6 +511,8 @@ multi-do:
|
||||||
|
ADAFLAGS="$(ADAFLAGS) $${flags}" \
|
||||||
|
prefix="$(prefix)" \
|
||||||
|
exec_prefix="$(exec_prefix)" \
|
||||||
|
+ mandir="$(mandir)" \
|
||||||
|
+ infodir="$(infodir)" \
|
||||||
|
GOCFLAGS="$(GOCFLAGS) $${flags}" \
|
||||||
|
GDCFLAGS="$(GDCFLAGS) $${flags}" \
|
||||||
|
CXXFLAGS="$(CXXFLAGS) $${flags}" \
|
||||||
|
--- libcpp/macro.cc.jj 2019-01-09 13:01:21.420552123 +0100
|
||||||
|
+++ libcpp/macro.cc 2019-01-11 18:18:17.736876285 +0100
|
||||||
|
@@ -3256,8 +3256,6 @@ static cpp_macro *
|
||||||
|
create_iso_definition (cpp_reader *pfile)
|
||||||
|
{
|
||||||
|
bool following_paste_op = false;
|
||||||
|
- const char *paste_op_error_msg =
|
||||||
|
- N_("'##' cannot appear at either end of a macro expansion");
|
||||||
|
unsigned int num_extra_tokens = 0;
|
||||||
|
unsigned nparms = 0;
|
||||||
|
cpp_hashnode **params = NULL;
|
||||||
|
@@ -3382,7 +3380,9 @@ create_iso_definition (cpp_reader *pfile
|
||||||
|
function-like macros, but not at the end. */
|
||||||
|
if (following_paste_op)
|
||||||
|
{
|
||||||
|
- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
|
||||||
|
+ cpp_error (pfile, CPP_DL_ERROR,
|
||||||
|
+ "'##' cannot appear at either end of a macro "
|
||||||
|
+ "expansion");
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
if (!vaopt_tracker.completed ())
|
||||||
|
@@ -3397,7 +3397,9 @@ create_iso_definition (cpp_reader *pfile
|
||||||
|
function-like macros, but not at the beginning. */
|
||||||
|
if (macro->count == 1)
|
||||||
|
{
|
||||||
|
- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
|
||||||
|
+ cpp_error (pfile, CPP_DL_ERROR,
|
||||||
|
+ "'##' cannot appear at either end of a macro "
|
||||||
|
+ "expansion");
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
--- libcpp/expr.cc.jj 2019-01-09 13:01:22.415535734 +0100
|
||||||
|
+++ libcpp/expr.cc 2019-01-11 18:16:23.444726882 +0100
|
||||||
|
@@ -803,16 +803,17 @@ cpp_classify_number (cpp_reader *pfile,
|
||||||
|
if ((result & CPP_N_WIDTH) == CPP_N_LARGE
|
||||||
|
&& CPP_OPTION (pfile, cpp_warn_long_long))
|
||||||
|
{
|
||||||
|
- const char *message = CPP_OPTION (pfile, cplusplus)
|
||||||
|
- ? N_("use of C++11 long long integer constant")
|
||||||
|
- : N_("use of C99 long long integer constant");
|
||||||
|
-
|
||||||
|
if (CPP_OPTION (pfile, c99))
|
||||||
|
cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location,
|
||||||
|
- 0, message);
|
||||||
|
+ 0, CPP_OPTION (pfile, cplusplus)
|
||||||
|
+ ? N_("use of C++11 long long integer constant")
|
||||||
|
+ : N_("use of C99 long long integer constant"));
|
||||||
|
else
|
||||||
|
cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG,
|
||||||
|
- virtual_location, 0, message);
|
||||||
|
+ virtual_location, 0,
|
||||||
|
+ CPP_OPTION (pfile, cplusplus)
|
||||||
|
+ ? N_("use of C++11 long long integer constant")
|
||||||
|
+ : N_("use of C99 long long integer constant"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((result & CPP_N_SIZE_T) == CPP_N_SIZE_T
|
716
SOURCES/gcc12-isl-dl.patch
Normal file
716
SOURCES/gcc12-isl-dl.patch
Normal file
@ -0,0 +1,716 @@
|
|||||||
|
--- gcc/Makefile.in.jj 2015-06-06 10:00:25.000000000 +0200
|
||||||
|
+++ gcc/Makefile.in 2015-11-04 14:56:02.643536437 +0100
|
||||||
|
@@ -1063,7 +1063,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
|
||||||
|
# and the system's installed libraries.
|
||||||
|
LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
|
||||||
|
$(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
|
||||||
|
-BACKENDLIBS = $(ISLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
|
||||||
|
+BACKENDLIBS = $(if $(ISLLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
|
||||||
|
$(ZLIB) $(ZSTD_LIB)
|
||||||
|
# Any system libraries needed just for GNAT.
|
||||||
|
SYSLIBS = @GNAT_LIBEXC@
|
||||||
|
@@ -2302,6 +2302,15 @@ $(out_object_file): $(out_file)
|
||||||
|
$(common_out_object_file): $(common_out_file)
|
||||||
|
$(COMPILE) $<
|
||||||
|
$(POSTCOMPILE)
|
||||||
|
+
|
||||||
|
+graphite%.o : \
|
||||||
|
+ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
|
||||||
|
+graphite.o : \
|
||||||
|
+ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
|
||||||
|
+graphite%.o : \
|
||||||
|
+ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
|
||||||
|
+graphite.o : \
|
||||||
|
+ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
|
||||||
|
#
|
||||||
|
# Generate header and source files from the machine description,
|
||||||
|
# and compile them.
|
||||||
|
--- gcc/graphite.h.jj 2016-01-27 12:44:06.000000000 +0100
|
||||||
|
+++ gcc/graphite.h 2016-01-27 13:26:38.309876856 +0100
|
||||||
|
@@ -24,6 +24,591 @@ along with GCC; see the file COPYING3.
|
||||||
|
|
||||||
|
#include "sese.h"
|
||||||
|
|
||||||
|
+#include <isl/version.h>
|
||||||
|
+#include <dlfcn.h>
|
||||||
|
+
|
||||||
|
+#define DYNSYMS \
|
||||||
|
+ DYNSYM (isl_aff_add_coefficient_si); \
|
||||||
|
+ DYNSYM (isl_aff_free); \
|
||||||
|
+ DYNSYM (isl_aff_get_space); \
|
||||||
|
+ DYNSYM (isl_aff_set_coefficient_si); \
|
||||||
|
+ DYNSYM (isl_aff_set_constant_si); \
|
||||||
|
+ DYNSYM (isl_aff_zero_on_domain); \
|
||||||
|
+ DYNSYM (isl_band_free); \
|
||||||
|
+ DYNSYM (isl_band_get_children); \
|
||||||
|
+ DYNSYM (isl_band_get_partial_schedule); \
|
||||||
|
+ DYNSYM (isl_band_has_children); \
|
||||||
|
+ DYNSYM (isl_band_list_free); \
|
||||||
|
+ DYNSYM (isl_band_list_get_band); \
|
||||||
|
+ DYNSYM (isl_band_list_get_ctx); \
|
||||||
|
+ DYNSYM (isl_band_list_n_band); \
|
||||||
|
+ DYNSYM (isl_band_n_member); \
|
||||||
|
+ DYNSYM (isl_basic_map_add_constraint); \
|
||||||
|
+ DYNSYM (isl_basic_map_project_out); \
|
||||||
|
+ DYNSYM (isl_basic_map_universe); \
|
||||||
|
+ DYNSYM (isl_constraint_set_coefficient_si); \
|
||||||
|
+ DYNSYM (isl_constraint_set_constant_si); \
|
||||||
|
+ DYNSYM (isl_ctx_alloc); \
|
||||||
|
+ DYNSYM (isl_ctx_free); \
|
||||||
|
+ DYNSYM (isl_equality_alloc); \
|
||||||
|
+ DYNSYM (isl_id_alloc); \
|
||||||
|
+ DYNSYM (isl_id_copy); \
|
||||||
|
+ DYNSYM (isl_id_free); \
|
||||||
|
+ DYNSYM (isl_inequality_alloc); \
|
||||||
|
+ DYNSYM (isl_local_space_copy); \
|
||||||
|
+ DYNSYM (isl_local_space_free); \
|
||||||
|
+ DYNSYM (isl_local_space_from_space); \
|
||||||
|
+ DYNSYM (isl_local_space_range); \
|
||||||
|
+ DYNSYM (isl_map_add_constraint); \
|
||||||
|
+ DYNSYM (isl_map_add_dims); \
|
||||||
|
+ DYNSYM (isl_map_align_params); \
|
||||||
|
+ DYNSYM (isl_map_apply_range); \
|
||||||
|
+ DYNSYM (isl_map_copy); \
|
||||||
|
+ DYNSYM (isl_map_dim); \
|
||||||
|
+ DYNSYM (isl_map_dump); \
|
||||||
|
+ DYNSYM (isl_map_equate); \
|
||||||
|
+ DYNSYM (isl_map_fix_si); \
|
||||||
|
+ DYNSYM (isl_map_flat_product); \
|
||||||
|
+ DYNSYM (isl_map_flat_range_product); \
|
||||||
|
+ DYNSYM (isl_map_free); \
|
||||||
|
+ DYNSYM (isl_map_from_basic_map); \
|
||||||
|
+ DYNSYM (isl_map_from_pw_aff); \
|
||||||
|
+ DYNSYM (isl_map_from_union_map); \
|
||||||
|
+ DYNSYM (isl_map_get_ctx); \
|
||||||
|
+ DYNSYM (isl_map_get_space); \
|
||||||
|
+ DYNSYM (isl_map_get_tuple_id); \
|
||||||
|
+ DYNSYM (isl_map_insert_dims); \
|
||||||
|
+ DYNSYM (isl_map_intersect); \
|
||||||
|
+ DYNSYM (isl_map_intersect_domain); \
|
||||||
|
+ DYNSYM (isl_map_intersect_range); \
|
||||||
|
+ DYNSYM (isl_map_is_empty); \
|
||||||
|
+ DYNSYM (isl_map_lex_ge); \
|
||||||
|
+ DYNSYM (isl_map_lex_le); \
|
||||||
|
+ DYNSYM (isl_map_n_out); \
|
||||||
|
+ DYNSYM (isl_map_range); \
|
||||||
|
+ DYNSYM (isl_map_set_tuple_id); \
|
||||||
|
+ DYNSYM (isl_map_universe); \
|
||||||
|
+ DYNSYM (isl_options_set_on_error); \
|
||||||
|
+ DYNSYM (isl_options_set_schedule_serialize_sccs); \
|
||||||
|
+ DYNSYM (isl_printer_set_yaml_style); \
|
||||||
|
+ DYNSYM (isl_options_set_schedule_max_constant_term); \
|
||||||
|
+ DYNSYM (isl_options_set_schedule_maximize_band_depth); \
|
||||||
|
+ DYNSYM (isl_printer_free); \
|
||||||
|
+ DYNSYM (isl_printer_print_aff); \
|
||||||
|
+ DYNSYM (isl_printer_print_constraint); \
|
||||||
|
+ DYNSYM (isl_printer_print_map); \
|
||||||
|
+ DYNSYM (isl_printer_print_set); \
|
||||||
|
+ DYNSYM (isl_printer_to_file); \
|
||||||
|
+ DYNSYM (isl_pw_aff_add); \
|
||||||
|
+ DYNSYM (isl_pw_aff_alloc); \
|
||||||
|
+ DYNSYM (isl_pw_aff_copy); \
|
||||||
|
+ DYNSYM (isl_pw_aff_eq_set); \
|
||||||
|
+ DYNSYM (isl_pw_aff_free); \
|
||||||
|
+ DYNSYM (isl_pw_aff_from_aff); \
|
||||||
|
+ DYNSYM (isl_pw_aff_ge_set); \
|
||||||
|
+ DYNSYM (isl_pw_aff_gt_set); \
|
||||||
|
+ DYNSYM (isl_pw_aff_is_cst); \
|
||||||
|
+ DYNSYM (isl_pw_aff_le_set); \
|
||||||
|
+ DYNSYM (isl_pw_aff_lt_set); \
|
||||||
|
+ DYNSYM (isl_pw_aff_mul); \
|
||||||
|
+ DYNSYM (isl_pw_aff_ne_set); \
|
||||||
|
+ DYNSYM (isl_pw_aff_nonneg_set); \
|
||||||
|
+ DYNSYM (isl_pw_aff_set_tuple_id); \
|
||||||
|
+ DYNSYM (isl_pw_aff_sub); \
|
||||||
|
+ DYNSYM (isl_pw_aff_zero_set); \
|
||||||
|
+ DYNSYM (isl_schedule_free); \
|
||||||
|
+ DYNSYM (isl_schedule_get_band_forest); \
|
||||||
|
+ DYNSYM (isl_set_add_constraint); \
|
||||||
|
+ DYNSYM (isl_set_add_dims); \
|
||||||
|
+ DYNSYM (isl_set_apply); \
|
||||||
|
+ DYNSYM (isl_set_coalesce); \
|
||||||
|
+ DYNSYM (isl_set_copy); \
|
||||||
|
+ DYNSYM (isl_set_dim); \
|
||||||
|
+ DYNSYM (isl_set_fix_si); \
|
||||||
|
+ DYNSYM (isl_set_free); \
|
||||||
|
+ DYNSYM (isl_set_get_space); \
|
||||||
|
+ DYNSYM (isl_set_get_tuple_id); \
|
||||||
|
+ DYNSYM (isl_set_intersect); \
|
||||||
|
+ DYNSYM (isl_set_is_empty); \
|
||||||
|
+ DYNSYM (isl_set_n_dim); \
|
||||||
|
+ DYNSYM (isl_set_nat_universe); \
|
||||||
|
+ DYNSYM (isl_set_project_out); \
|
||||||
|
+ DYNSYM (isl_set_set_tuple_id); \
|
||||||
|
+ DYNSYM (isl_set_universe); \
|
||||||
|
+ DYNSYM (isl_space_add_dims); \
|
||||||
|
+ DYNSYM (isl_space_alloc); \
|
||||||
|
+ DYNSYM (isl_space_copy); \
|
||||||
|
+ DYNSYM (isl_space_dim); \
|
||||||
|
+ DYNSYM (isl_space_domain); \
|
||||||
|
+ DYNSYM (isl_space_find_dim_by_id); \
|
||||||
|
+ DYNSYM (isl_space_free); \
|
||||||
|
+ DYNSYM (isl_space_from_domain); \
|
||||||
|
+ DYNSYM (isl_space_get_tuple_id); \
|
||||||
|
+ DYNSYM (isl_space_params_alloc); \
|
||||||
|
+ DYNSYM (isl_space_range); \
|
||||||
|
+ DYNSYM (isl_space_set_alloc); \
|
||||||
|
+ DYNSYM (isl_space_set_dim_id); \
|
||||||
|
+ DYNSYM (isl_space_set_tuple_id); \
|
||||||
|
+ DYNSYM (isl_union_map_add_map); \
|
||||||
|
+ DYNSYM (isl_union_map_align_params); \
|
||||||
|
+ DYNSYM (isl_union_map_apply_domain); \
|
||||||
|
+ DYNSYM (isl_union_map_apply_range); \
|
||||||
|
+ DYNSYM (isl_union_map_compute_flow); \
|
||||||
|
+ DYNSYM (isl_union_map_copy); \
|
||||||
|
+ DYNSYM (isl_union_map_empty); \
|
||||||
|
+ DYNSYM (isl_union_map_flat_range_product); \
|
||||||
|
+ DYNSYM (isl_union_map_foreach_map); \
|
||||||
|
+ DYNSYM (isl_union_map_free); \
|
||||||
|
+ DYNSYM (isl_union_map_from_map); \
|
||||||
|
+ DYNSYM (isl_union_map_get_ctx); \
|
||||||
|
+ DYNSYM (isl_union_map_get_space); \
|
||||||
|
+ DYNSYM (isl_union_map_gist_domain); \
|
||||||
|
+ DYNSYM (isl_union_map_gist_range); \
|
||||||
|
+ DYNSYM (isl_union_map_intersect_domain); \
|
||||||
|
+ DYNSYM (isl_union_map_is_empty); \
|
||||||
|
+ DYNSYM (isl_union_map_subtract); \
|
||||||
|
+ DYNSYM (isl_union_map_union); \
|
||||||
|
+ DYNSYM (isl_union_set_add_set); \
|
||||||
|
+ DYNSYM (isl_union_set_compute_schedule); \
|
||||||
|
+ DYNSYM (isl_union_set_copy); \
|
||||||
|
+ DYNSYM (isl_union_set_empty); \
|
||||||
|
+ DYNSYM (isl_union_set_from_set); \
|
||||||
|
+ DYNSYM (isl_aff_add_constant_val); \
|
||||||
|
+ DYNSYM (isl_aff_get_coefficient_val); \
|
||||||
|
+ DYNSYM (isl_aff_get_ctx); \
|
||||||
|
+ DYNSYM (isl_aff_mod_val); \
|
||||||
|
+ DYNSYM (isl_ast_build_ast_from_schedule); \
|
||||||
|
+ DYNSYM (isl_ast_build_free); \
|
||||||
|
+ DYNSYM (isl_ast_build_from_context); \
|
||||||
|
+ DYNSYM (isl_ast_build_get_ctx); \
|
||||||
|
+ DYNSYM (isl_ast_build_get_schedule); \
|
||||||
|
+ DYNSYM (isl_ast_build_get_schedule_space); \
|
||||||
|
+ DYNSYM (isl_ast_build_set_before_each_for); \
|
||||||
|
+ DYNSYM (isl_ast_build_set_options); \
|
||||||
|
+ DYNSYM (isl_ast_expr_free); \
|
||||||
|
+ DYNSYM (isl_ast_expr_from_val); \
|
||||||
|
+ DYNSYM (isl_ast_expr_get_ctx); \
|
||||||
|
+ DYNSYM (isl_ast_expr_get_id); \
|
||||||
|
+ DYNSYM (isl_ast_expr_get_op_arg); \
|
||||||
|
+ DYNSYM (isl_ast_expr_get_op_n_arg); \
|
||||||
|
+ DYNSYM (isl_ast_expr_get_op_type); \
|
||||||
|
+ DYNSYM (isl_ast_expr_get_type); \
|
||||||
|
+ DYNSYM (isl_ast_expr_get_val); \
|
||||||
|
+ DYNSYM (isl_ast_expr_sub); \
|
||||||
|
+ DYNSYM (isl_ast_node_block_get_children); \
|
||||||
|
+ DYNSYM (isl_ast_node_for_get_body); \
|
||||||
|
+ DYNSYM (isl_ast_node_for_get_cond); \
|
||||||
|
+ DYNSYM (isl_ast_node_for_get_inc); \
|
||||||
|
+ DYNSYM (isl_ast_node_for_get_init); \
|
||||||
|
+ DYNSYM (isl_ast_node_for_get_iterator); \
|
||||||
|
+ DYNSYM (isl_ast_node_free); \
|
||||||
|
+ DYNSYM (isl_ast_node_get_annotation); \
|
||||||
|
+ DYNSYM (isl_ast_node_get_type); \
|
||||||
|
+ DYNSYM (isl_ast_node_if_get_cond); \
|
||||||
|
+ DYNSYM (isl_ast_node_if_get_else); \
|
||||||
|
+ DYNSYM (isl_ast_node_if_get_then); \
|
||||||
|
+ DYNSYM (isl_ast_node_list_free); \
|
||||||
|
+ DYNSYM (isl_ast_node_list_get_ast_node); \
|
||||||
|
+ DYNSYM (isl_ast_node_list_n_ast_node); \
|
||||||
|
+ DYNSYM (isl_ast_node_user_get_expr); \
|
||||||
|
+ DYNSYM (isl_constraint_set_coefficient_val); \
|
||||||
|
+ DYNSYM (isl_constraint_set_constant_val); \
|
||||||
|
+ DYNSYM (isl_id_get_user); \
|
||||||
|
+ DYNSYM (isl_local_space_get_ctx); \
|
||||||
|
+ DYNSYM (isl_map_fix_val); \
|
||||||
|
+ DYNSYM (isl_options_set_ast_build_atomic_upper_bound); \
|
||||||
|
+ DYNSYM (isl_printer_print_ast_node); \
|
||||||
|
+ DYNSYM (isl_printer_print_str); \
|
||||||
|
+ DYNSYM (isl_printer_set_output_format); \
|
||||||
|
+ DYNSYM (isl_pw_aff_mod_val); \
|
||||||
|
+ DYNSYM (isl_schedule_constraints_compute_schedule); \
|
||||||
|
+ DYNSYM (isl_schedule_constraints_on_domain); \
|
||||||
|
+ DYNSYM (isl_schedule_constraints_set_coincidence); \
|
||||||
|
+ DYNSYM (isl_schedule_constraints_set_proximity); \
|
||||||
|
+ DYNSYM (isl_schedule_constraints_set_validity); \
|
||||||
|
+ DYNSYM (isl_set_get_dim_id); \
|
||||||
|
+ DYNSYM (isl_set_max_val); \
|
||||||
|
+ DYNSYM (isl_set_min_val); \
|
||||||
|
+ DYNSYM (isl_set_params); \
|
||||||
|
+ DYNSYM (isl_space_align_params); \
|
||||||
|
+ DYNSYM (isl_space_map_from_domain_and_range); \
|
||||||
|
+ DYNSYM (isl_space_set_tuple_name); \
|
||||||
|
+ DYNSYM (isl_space_wrap); \
|
||||||
|
+ DYNSYM (isl_union_map_from_domain_and_range); \
|
||||||
|
+ DYNSYM (isl_union_map_range); \
|
||||||
|
+ DYNSYM (isl_union_set_union); \
|
||||||
|
+ DYNSYM (isl_union_set_universe); \
|
||||||
|
+ DYNSYM (isl_val_2exp); \
|
||||||
|
+ DYNSYM (isl_val_add_ui); \
|
||||||
|
+ DYNSYM (isl_val_copy); \
|
||||||
|
+ DYNSYM (isl_val_free); \
|
||||||
|
+ DYNSYM (isl_val_int_from_si); \
|
||||||
|
+ DYNSYM (isl_val_int_from_ui); \
|
||||||
|
+ DYNSYM (isl_val_mul); \
|
||||||
|
+ DYNSYM (isl_val_neg); \
|
||||||
|
+ DYNSYM (isl_val_sub); \
|
||||||
|
+ DYNSYM (isl_printer_print_union_map); \
|
||||||
|
+ DYNSYM (isl_pw_aff_get_ctx); \
|
||||||
|
+ DYNSYM (isl_val_is_int); \
|
||||||
|
+ DYNSYM (isl_ctx_get_max_operations); \
|
||||||
|
+ DYNSYM (isl_ctx_set_max_operations); \
|
||||||
|
+ DYNSYM (isl_ctx_last_error); \
|
||||||
|
+ DYNSYM (isl_ctx_reset_operations); \
|
||||||
|
+ DYNSYM (isl_map_coalesce); \
|
||||||
|
+ DYNSYM (isl_printer_print_schedule); \
|
||||||
|
+ DYNSYM (isl_set_set_dim_id); \
|
||||||
|
+ DYNSYM (isl_union_map_coalesce); \
|
||||||
|
+ DYNSYM (isl_multi_val_set_val); \
|
||||||
|
+ DYNSYM (isl_multi_val_zero); \
|
||||||
|
+ DYNSYM (isl_options_set_schedule_max_coefficient); \
|
||||||
|
+ DYNSYM (isl_options_set_tile_scale_tile_loops); \
|
||||||
|
+ DYNSYM (isl_schedule_copy); \
|
||||||
|
+ DYNSYM (isl_schedule_get_map); \
|
||||||
|
+ DYNSYM (isl_schedule_map_schedule_node_bottom_up); \
|
||||||
|
+ DYNSYM (isl_schedule_node_band_get_permutable); \
|
||||||
|
+ DYNSYM (isl_schedule_node_band_get_space); \
|
||||||
|
+ DYNSYM (isl_schedule_node_band_tile); \
|
||||||
|
+ DYNSYM (isl_schedule_node_child); \
|
||||||
|
+ DYNSYM (isl_schedule_node_free); \
|
||||||
|
+ DYNSYM (isl_schedule_node_get_child); \
|
||||||
|
+ DYNSYM (isl_schedule_node_get_ctx); \
|
||||||
|
+ DYNSYM (isl_schedule_node_get_type); \
|
||||||
|
+ DYNSYM (isl_schedule_node_n_children); \
|
||||||
|
+ DYNSYM (isl_union_map_is_equal); \
|
||||||
|
+ DYNSYM (isl_union_access_info_compute_flow); \
|
||||||
|
+ DYNSYM (isl_union_access_info_from_sink); \
|
||||||
|
+ DYNSYM (isl_union_access_info_set_may_source); \
|
||||||
|
+ DYNSYM (isl_union_access_info_set_must_source); \
|
||||||
|
+ DYNSYM (isl_union_access_info_set_schedule); \
|
||||||
|
+ DYNSYM (isl_union_flow_free); \
|
||||||
|
+ DYNSYM (isl_union_flow_get_may_dependence); \
|
||||||
|
+ DYNSYM (isl_union_flow_get_must_dependence); \
|
||||||
|
+ DYNSYM (isl_aff_var_on_domain); \
|
||||||
|
+ DYNSYM (isl_multi_aff_from_aff); \
|
||||||
|
+ DYNSYM (isl_schedule_get_ctx); \
|
||||||
|
+ DYNSYM (isl_multi_aff_set_tuple_id); \
|
||||||
|
+ DYNSYM (isl_multi_aff_dim); \
|
||||||
|
+ DYNSYM (isl_schedule_get_domain); \
|
||||||
|
+ DYNSYM (isl_union_set_is_empty); \
|
||||||
|
+ DYNSYM (isl_union_set_get_space); \
|
||||||
|
+ DYNSYM (isl_union_pw_multi_aff_empty); \
|
||||||
|
+ DYNSYM (isl_union_set_foreach_set); \
|
||||||
|
+ DYNSYM (isl_union_set_free); \
|
||||||
|
+ DYNSYM (isl_multi_union_pw_aff_from_union_pw_multi_aff); \
|
||||||
|
+ DYNSYM (isl_multi_union_pw_aff_apply_multi_aff); \
|
||||||
|
+ DYNSYM (isl_schedule_insert_partial_schedule); \
|
||||||
|
+ DYNSYM (isl_union_pw_multi_aff_free); \
|
||||||
|
+ DYNSYM (isl_pw_multi_aff_project_out_map); \
|
||||||
|
+ DYNSYM (isl_union_pw_multi_aff_add_pw_multi_aff); \
|
||||||
|
+ DYNSYM (isl_schedule_from_domain); \
|
||||||
|
+ DYNSYM (isl_schedule_sequence); \
|
||||||
|
+ DYNSYM (isl_ast_build_node_from_schedule); \
|
||||||
|
+ DYNSYM (isl_ast_node_mark_get_node); \
|
||||||
|
+ DYNSYM (isl_schedule_node_band_member_get_ast_loop_type); \
|
||||||
|
+ DYNSYM (isl_schedule_node_band_member_set_ast_loop_type); \
|
||||||
|
+ DYNSYM (isl_val_n_abs_num_chunks); \
|
||||||
|
+ DYNSYM (isl_val_get_abs_num_chunks); \
|
||||||
|
+ DYNSYM (isl_val_int_from_chunks); \
|
||||||
|
+ DYNSYM (isl_val_is_neg); \
|
||||||
|
+ DYNSYM (isl_version); \
|
||||||
|
+ DYNSYM (isl_options_get_on_error); \
|
||||||
|
+ DYNSYM (isl_ctx_reset_error);
|
||||||
|
+
|
||||||
|
+extern struct isl_pointers_s__
|
||||||
|
+{
|
||||||
|
+ bool inited;
|
||||||
|
+ void *h;
|
||||||
|
+#define DYNSYM(x) __typeof (x) *p_##x
|
||||||
|
+ DYNSYMS
|
||||||
|
+#undef DYNSYM
|
||||||
|
+} isl_pointers__;
|
||||||
|
+
|
||||||
|
+#define isl_aff_add_coefficient_si (*isl_pointers__.p_isl_aff_add_coefficient_si)
|
||||||
|
+#define isl_aff_free (*isl_pointers__.p_isl_aff_free)
|
||||||
|
+#define isl_aff_get_space (*isl_pointers__.p_isl_aff_get_space)
|
||||||
|
+#define isl_aff_set_coefficient_si (*isl_pointers__.p_isl_aff_set_coefficient_si)
|
||||||
|
+#define isl_aff_set_constant_si (*isl_pointers__.p_isl_aff_set_constant_si)
|
||||||
|
+#define isl_aff_zero_on_domain (*isl_pointers__.p_isl_aff_zero_on_domain)
|
||||||
|
+#define isl_band_free (*isl_pointers__.p_isl_band_free)
|
||||||
|
+#define isl_band_get_children (*isl_pointers__.p_isl_band_get_children)
|
||||||
|
+#define isl_band_get_partial_schedule (*isl_pointers__.p_isl_band_get_partial_schedule)
|
||||||
|
+#define isl_band_has_children (*isl_pointers__.p_isl_band_has_children)
|
||||||
|
+#define isl_band_list_free (*isl_pointers__.p_isl_band_list_free)
|
||||||
|
+#define isl_band_list_get_band (*isl_pointers__.p_isl_band_list_get_band)
|
||||||
|
+#define isl_band_list_get_ctx (*isl_pointers__.p_isl_band_list_get_ctx)
|
||||||
|
+#define isl_band_list_n_band (*isl_pointers__.p_isl_band_list_n_band)
|
||||||
|
+#define isl_band_n_member (*isl_pointers__.p_isl_band_n_member)
|
||||||
|
+#define isl_basic_map_add_constraint (*isl_pointers__.p_isl_basic_map_add_constraint)
|
||||||
|
+#define isl_basic_map_project_out (*isl_pointers__.p_isl_basic_map_project_out)
|
||||||
|
+#define isl_basic_map_universe (*isl_pointers__.p_isl_basic_map_universe)
|
||||||
|
+#define isl_constraint_set_coefficient_si (*isl_pointers__.p_isl_constraint_set_coefficient_si)
|
||||||
|
+#define isl_constraint_set_constant_si (*isl_pointers__.p_isl_constraint_set_constant_si)
|
||||||
|
+#define isl_ctx_alloc (*isl_pointers__.p_isl_ctx_alloc)
|
||||||
|
+#define isl_ctx_free (*isl_pointers__.p_isl_ctx_free)
|
||||||
|
+#define isl_equality_alloc (*isl_pointers__.p_isl_equality_alloc)
|
||||||
|
+#define isl_id_alloc (*isl_pointers__.p_isl_id_alloc)
|
||||||
|
+#define isl_id_copy (*isl_pointers__.p_isl_id_copy)
|
||||||
|
+#define isl_id_free (*isl_pointers__.p_isl_id_free)
|
||||||
|
+#define isl_inequality_alloc (*isl_pointers__.p_isl_inequality_alloc)
|
||||||
|
+#define isl_local_space_copy (*isl_pointers__.p_isl_local_space_copy)
|
||||||
|
+#define isl_local_space_free (*isl_pointers__.p_isl_local_space_free)
|
||||||
|
+#define isl_local_space_from_space (*isl_pointers__.p_isl_local_space_from_space)
|
||||||
|
+#define isl_local_space_range (*isl_pointers__.p_isl_local_space_range)
|
||||||
|
+#define isl_map_add_constraint (*isl_pointers__.p_isl_map_add_constraint)
|
||||||
|
+#define isl_map_add_dims (*isl_pointers__.p_isl_map_add_dims)
|
||||||
|
+#define isl_map_align_params (*isl_pointers__.p_isl_map_align_params)
|
||||||
|
+#define isl_map_apply_range (*isl_pointers__.p_isl_map_apply_range)
|
||||||
|
+#define isl_map_copy (*isl_pointers__.p_isl_map_copy)
|
||||||
|
+#define isl_map_dim (*isl_pointers__.p_isl_map_dim)
|
||||||
|
+#define isl_map_dump (*isl_pointers__.p_isl_map_dump)
|
||||||
|
+#define isl_map_equate (*isl_pointers__.p_isl_map_equate)
|
||||||
|
+#define isl_map_fix_si (*isl_pointers__.p_isl_map_fix_si)
|
||||||
|
+#define isl_map_flat_product (*isl_pointers__.p_isl_map_flat_product)
|
||||||
|
+#define isl_map_flat_range_product (*isl_pointers__.p_isl_map_flat_range_product)
|
||||||
|
+#define isl_map_free (*isl_pointers__.p_isl_map_free)
|
||||||
|
+#define isl_map_from_basic_map (*isl_pointers__.p_isl_map_from_basic_map)
|
||||||
|
+#define isl_map_from_pw_aff (*isl_pointers__.p_isl_map_from_pw_aff)
|
||||||
|
+#define isl_map_from_union_map (*isl_pointers__.p_isl_map_from_union_map)
|
||||||
|
+#define isl_map_get_ctx (*isl_pointers__.p_isl_map_get_ctx)
|
||||||
|
+#define isl_map_get_space (*isl_pointers__.p_isl_map_get_space)
|
||||||
|
+#define isl_map_get_tuple_id (*isl_pointers__.p_isl_map_get_tuple_id)
|
||||||
|
+#define isl_map_insert_dims (*isl_pointers__.p_isl_map_insert_dims)
|
||||||
|
+#define isl_map_intersect (*isl_pointers__.p_isl_map_intersect)
|
||||||
|
+#define isl_map_intersect_domain (*isl_pointers__.p_isl_map_intersect_domain)
|
||||||
|
+#define isl_map_intersect_range (*isl_pointers__.p_isl_map_intersect_range)
|
||||||
|
+#define isl_map_is_empty (*isl_pointers__.p_isl_map_is_empty)
|
||||||
|
+#define isl_map_lex_ge (*isl_pointers__.p_isl_map_lex_ge)
|
||||||
|
+#define isl_map_lex_le (*isl_pointers__.p_isl_map_lex_le)
|
||||||
|
+#define isl_map_n_out (*isl_pointers__.p_isl_map_n_out)
|
||||||
|
+#define isl_map_range (*isl_pointers__.p_isl_map_range)
|
||||||
|
+#define isl_map_set_tuple_id (*isl_pointers__.p_isl_map_set_tuple_id)
|
||||||
|
+#define isl_map_universe (*isl_pointers__.p_isl_map_universe)
|
||||||
|
+#define isl_options_set_on_error (*isl_pointers__.p_isl_options_set_on_error)
|
||||||
|
+#define isl_options_set_schedule_serialize_sccs (*isl_pointers__.p_isl_options_set_schedule_serialize_sccs)
|
||||||
|
+#define isl_printer_set_yaml_style (*isl_pointers__.p_isl_printer_set_yaml_style)
|
||||||
|
+#define isl_options_set_schedule_max_constant_term (*isl_pointers__.p_isl_options_set_schedule_max_constant_term)
|
||||||
|
+#define isl_options_set_schedule_maximize_band_depth (*isl_pointers__.p_isl_options_set_schedule_maximize_band_depth)
|
||||||
|
+#define isl_printer_free (*isl_pointers__.p_isl_printer_free)
|
||||||
|
+#define isl_printer_print_aff (*isl_pointers__.p_isl_printer_print_aff)
|
||||||
|
+#define isl_printer_print_constraint (*isl_pointers__.p_isl_printer_print_constraint)
|
||||||
|
+#define isl_printer_print_map (*isl_pointers__.p_isl_printer_print_map)
|
||||||
|
+#define isl_printer_print_set (*isl_pointers__.p_isl_printer_print_set)
|
||||||
|
+#define isl_printer_to_file (*isl_pointers__.p_isl_printer_to_file)
|
||||||
|
+#define isl_pw_aff_add (*isl_pointers__.p_isl_pw_aff_add)
|
||||||
|
+#define isl_pw_aff_alloc (*isl_pointers__.p_isl_pw_aff_alloc)
|
||||||
|
+#define isl_pw_aff_copy (*isl_pointers__.p_isl_pw_aff_copy)
|
||||||
|
+#define isl_pw_aff_eq_set (*isl_pointers__.p_isl_pw_aff_eq_set)
|
||||||
|
+#define isl_pw_aff_free (*isl_pointers__.p_isl_pw_aff_free)
|
||||||
|
+#define isl_pw_aff_from_aff (*isl_pointers__.p_isl_pw_aff_from_aff)
|
||||||
|
+#define isl_pw_aff_ge_set (*isl_pointers__.p_isl_pw_aff_ge_set)
|
||||||
|
+#define isl_pw_aff_gt_set (*isl_pointers__.p_isl_pw_aff_gt_set)
|
||||||
|
+#define isl_pw_aff_is_cst (*isl_pointers__.p_isl_pw_aff_is_cst)
|
||||||
|
+#define isl_pw_aff_le_set (*isl_pointers__.p_isl_pw_aff_le_set)
|
||||||
|
+#define isl_pw_aff_lt_set (*isl_pointers__.p_isl_pw_aff_lt_set)
|
||||||
|
+#define isl_pw_aff_mul (*isl_pointers__.p_isl_pw_aff_mul)
|
||||||
|
+#define isl_pw_aff_ne_set (*isl_pointers__.p_isl_pw_aff_ne_set)
|
||||||
|
+#define isl_pw_aff_nonneg_set (*isl_pointers__.p_isl_pw_aff_nonneg_set)
|
||||||
|
+#define isl_pw_aff_set_tuple_id (*isl_pointers__.p_isl_pw_aff_set_tuple_id)
|
||||||
|
+#define isl_pw_aff_sub (*isl_pointers__.p_isl_pw_aff_sub)
|
||||||
|
+#define isl_pw_aff_zero_set (*isl_pointers__.p_isl_pw_aff_zero_set)
|
||||||
|
+#define isl_schedule_free (*isl_pointers__.p_isl_schedule_free)
|
||||||
|
+#define isl_schedule_get_band_forest (*isl_pointers__.p_isl_schedule_get_band_forest)
|
||||||
|
+#define isl_set_add_constraint (*isl_pointers__.p_isl_set_add_constraint)
|
||||||
|
+#define isl_set_add_dims (*isl_pointers__.p_isl_set_add_dims)
|
||||||
|
+#define isl_set_apply (*isl_pointers__.p_isl_set_apply)
|
||||||
|
+#define isl_set_coalesce (*isl_pointers__.p_isl_set_coalesce)
|
||||||
|
+#define isl_set_copy (*isl_pointers__.p_isl_set_copy)
|
||||||
|
+#define isl_set_dim (*isl_pointers__.p_isl_set_dim)
|
||||||
|
+#define isl_set_fix_si (*isl_pointers__.p_isl_set_fix_si)
|
||||||
|
+#define isl_set_free (*isl_pointers__.p_isl_set_free)
|
||||||
|
+#define isl_set_get_space (*isl_pointers__.p_isl_set_get_space)
|
||||||
|
+#define isl_set_get_tuple_id (*isl_pointers__.p_isl_set_get_tuple_id)
|
||||||
|
+#define isl_set_intersect (*isl_pointers__.p_isl_set_intersect)
|
||||||
|
+#define isl_set_is_empty (*isl_pointers__.p_isl_set_is_empty)
|
||||||
|
+#define isl_set_n_dim (*isl_pointers__.p_isl_set_n_dim)
|
||||||
|
+#define isl_set_nat_universe (*isl_pointers__.p_isl_set_nat_universe)
|
||||||
|
+#define isl_set_project_out (*isl_pointers__.p_isl_set_project_out)
|
||||||
|
+#define isl_set_set_tuple_id (*isl_pointers__.p_isl_set_set_tuple_id)
|
||||||
|
+#define isl_set_universe (*isl_pointers__.p_isl_set_universe)
|
||||||
|
+#define isl_space_add_dims (*isl_pointers__.p_isl_space_add_dims)
|
||||||
|
+#define isl_space_alloc (*isl_pointers__.p_isl_space_alloc)
|
||||||
|
+#define isl_space_copy (*isl_pointers__.p_isl_space_copy)
|
||||||
|
+#define isl_space_dim (*isl_pointers__.p_isl_space_dim)
|
||||||
|
+#define isl_space_domain (*isl_pointers__.p_isl_space_domain)
|
||||||
|
+#define isl_space_find_dim_by_id (*isl_pointers__.p_isl_space_find_dim_by_id)
|
||||||
|
+#define isl_space_free (*isl_pointers__.p_isl_space_free)
|
||||||
|
+#define isl_space_from_domain (*isl_pointers__.p_isl_space_from_domain)
|
||||||
|
+#define isl_space_get_tuple_id (*isl_pointers__.p_isl_space_get_tuple_id)
|
||||||
|
+#define isl_space_params_alloc (*isl_pointers__.p_isl_space_params_alloc)
|
||||||
|
+#define isl_space_range (*isl_pointers__.p_isl_space_range)
|
||||||
|
+#define isl_space_set_alloc (*isl_pointers__.p_isl_space_set_alloc)
|
||||||
|
+#define isl_space_set_dim_id (*isl_pointers__.p_isl_space_set_dim_id)
|
||||||
|
+#define isl_space_set_tuple_id (*isl_pointers__.p_isl_space_set_tuple_id)
|
||||||
|
+#define isl_union_map_add_map (*isl_pointers__.p_isl_union_map_add_map)
|
||||||
|
+#define isl_union_map_align_params (*isl_pointers__.p_isl_union_map_align_params)
|
||||||
|
+#define isl_union_map_apply_domain (*isl_pointers__.p_isl_union_map_apply_domain)
|
||||||
|
+#define isl_union_map_apply_range (*isl_pointers__.p_isl_union_map_apply_range)
|
||||||
|
+#define isl_union_map_compute_flow (*isl_pointers__.p_isl_union_map_compute_flow)
|
||||||
|
+#define isl_union_map_copy (*isl_pointers__.p_isl_union_map_copy)
|
||||||
|
+#define isl_union_map_empty (*isl_pointers__.p_isl_union_map_empty)
|
||||||
|
+#define isl_union_map_flat_range_product (*isl_pointers__.p_isl_union_map_flat_range_product)
|
||||||
|
+#define isl_union_map_foreach_map (*isl_pointers__.p_isl_union_map_foreach_map)
|
||||||
|
+#define isl_union_map_free (*isl_pointers__.p_isl_union_map_free)
|
||||||
|
+#define isl_union_map_from_map (*isl_pointers__.p_isl_union_map_from_map)
|
||||||
|
+#define isl_union_map_get_ctx (*isl_pointers__.p_isl_union_map_get_ctx)
|
||||||
|
+#define isl_union_map_get_space (*isl_pointers__.p_isl_union_map_get_space)
|
||||||
|
+#define isl_union_map_gist_domain (*isl_pointers__.p_isl_union_map_gist_domain)
|
||||||
|
+#define isl_union_map_gist_range (*isl_pointers__.p_isl_union_map_gist_range)
|
||||||
|
+#define isl_union_map_intersect_domain (*isl_pointers__.p_isl_union_map_intersect_domain)
|
||||||
|
+#define isl_union_map_is_empty (*isl_pointers__.p_isl_union_map_is_empty)
|
||||||
|
+#define isl_union_map_subtract (*isl_pointers__.p_isl_union_map_subtract)
|
||||||
|
+#define isl_union_map_union (*isl_pointers__.p_isl_union_map_union)
|
||||||
|
+#define isl_union_set_add_set (*isl_pointers__.p_isl_union_set_add_set)
|
||||||
|
+#define isl_union_set_compute_schedule (*isl_pointers__.p_isl_union_set_compute_schedule)
|
||||||
|
+#define isl_union_set_copy (*isl_pointers__.p_isl_union_set_copy)
|
||||||
|
+#define isl_union_set_empty (*isl_pointers__.p_isl_union_set_empty)
|
||||||
|
+#define isl_union_set_from_set (*isl_pointers__.p_isl_union_set_from_set)
|
||||||
|
+#define isl_aff_add_constant_val (*isl_pointers__.p_isl_aff_add_constant_val)
|
||||||
|
+#define isl_aff_get_coefficient_val (*isl_pointers__.p_isl_aff_get_coefficient_val)
|
||||||
|
+#define isl_aff_get_ctx (*isl_pointers__.p_isl_aff_get_ctx)
|
||||||
|
+#define isl_aff_mod_val (*isl_pointers__.p_isl_aff_mod_val)
|
||||||
|
+#define isl_ast_build_ast_from_schedule (*isl_pointers__.p_isl_ast_build_ast_from_schedule)
|
||||||
|
+#define isl_ast_build_free (*isl_pointers__.p_isl_ast_build_free)
|
||||||
|
+#define isl_ast_build_from_context (*isl_pointers__.p_isl_ast_build_from_context)
|
||||||
|
+#define isl_ast_build_get_ctx (*isl_pointers__.p_isl_ast_build_get_ctx)
|
||||||
|
+#define isl_ast_build_get_schedule (*isl_pointers__.p_isl_ast_build_get_schedule)
|
||||||
|
+#define isl_ast_build_get_schedule_space (*isl_pointers__.p_isl_ast_build_get_schedule_space)
|
||||||
|
+#define isl_ast_build_set_before_each_for (*isl_pointers__.p_isl_ast_build_set_before_each_for)
|
||||||
|
+#define isl_ast_build_set_options (*isl_pointers__.p_isl_ast_build_set_options)
|
||||||
|
+#define isl_ast_expr_free (*isl_pointers__.p_isl_ast_expr_free)
|
||||||
|
+#define isl_ast_expr_from_val (*isl_pointers__.p_isl_ast_expr_from_val)
|
||||||
|
+#define isl_ast_expr_get_ctx (*isl_pointers__.p_isl_ast_expr_get_ctx)
|
||||||
|
+#define isl_ast_expr_get_id (*isl_pointers__.p_isl_ast_expr_get_id)
|
||||||
|
+#define isl_ast_expr_get_op_arg (*isl_pointers__.p_isl_ast_expr_get_op_arg)
|
||||||
|
+#define isl_ast_expr_get_op_n_arg (*isl_pointers__.p_isl_ast_expr_get_op_n_arg)
|
||||||
|
+#define isl_ast_expr_get_op_type (*isl_pointers__.p_isl_ast_expr_get_op_type)
|
||||||
|
+#define isl_ast_expr_get_type (*isl_pointers__.p_isl_ast_expr_get_type)
|
||||||
|
+#define isl_ast_expr_get_val (*isl_pointers__.p_isl_ast_expr_get_val)
|
||||||
|
+#define isl_ast_expr_sub (*isl_pointers__.p_isl_ast_expr_sub)
|
||||||
|
+#define isl_ast_node_block_get_children (*isl_pointers__.p_isl_ast_node_block_get_children)
|
||||||
|
+#define isl_ast_node_for_get_body (*isl_pointers__.p_isl_ast_node_for_get_body)
|
||||||
|
+#define isl_ast_node_for_get_cond (*isl_pointers__.p_isl_ast_node_for_get_cond)
|
||||||
|
+#define isl_ast_node_for_get_inc (*isl_pointers__.p_isl_ast_node_for_get_inc)
|
||||||
|
+#define isl_ast_node_for_get_init (*isl_pointers__.p_isl_ast_node_for_get_init)
|
||||||
|
+#define isl_ast_node_for_get_iterator (*isl_pointers__.p_isl_ast_node_for_get_iterator)
|
||||||
|
+#define isl_ast_node_free (*isl_pointers__.p_isl_ast_node_free)
|
||||||
|
+#define isl_ast_node_get_annotation (*isl_pointers__.p_isl_ast_node_get_annotation)
|
||||||
|
+#define isl_ast_node_get_type (*isl_pointers__.p_isl_ast_node_get_type)
|
||||||
|
+#define isl_ast_node_if_get_cond (*isl_pointers__.p_isl_ast_node_if_get_cond)
|
||||||
|
+#define isl_ast_node_if_get_else (*isl_pointers__.p_isl_ast_node_if_get_else)
|
||||||
|
+#define isl_ast_node_if_get_then (*isl_pointers__.p_isl_ast_node_if_get_then)
|
||||||
|
+#define isl_ast_node_list_free (*isl_pointers__.p_isl_ast_node_list_free)
|
||||||
|
+#define isl_ast_node_list_get_ast_node (*isl_pointers__.p_isl_ast_node_list_get_ast_node)
|
||||||
|
+#define isl_ast_node_list_n_ast_node (*isl_pointers__.p_isl_ast_node_list_n_ast_node)
|
||||||
|
+#define isl_ast_node_user_get_expr (*isl_pointers__.p_isl_ast_node_user_get_expr)
|
||||||
|
+#define isl_constraint_set_coefficient_val (*isl_pointers__.p_isl_constraint_set_coefficient_val)
|
||||||
|
+#define isl_constraint_set_constant_val (*isl_pointers__.p_isl_constraint_set_constant_val)
|
||||||
|
+#define isl_id_get_user (*isl_pointers__.p_isl_id_get_user)
|
||||||
|
+#define isl_local_space_get_ctx (*isl_pointers__.p_isl_local_space_get_ctx)
|
||||||
|
+#define isl_map_fix_val (*isl_pointers__.p_isl_map_fix_val)
|
||||||
|
+#define isl_options_set_ast_build_atomic_upper_bound (*isl_pointers__.p_isl_options_set_ast_build_atomic_upper_bound)
|
||||||
|
+#define isl_printer_print_ast_node (*isl_pointers__.p_isl_printer_print_ast_node)
|
||||||
|
+#define isl_printer_print_str (*isl_pointers__.p_isl_printer_print_str)
|
||||||
|
+#define isl_printer_set_output_format (*isl_pointers__.p_isl_printer_set_output_format)
|
||||||
|
+#define isl_pw_aff_mod_val (*isl_pointers__.p_isl_pw_aff_mod_val)
|
||||||
|
+#define isl_schedule_constraints_compute_schedule (*isl_pointers__.p_isl_schedule_constraints_compute_schedule)
|
||||||
|
+#define isl_schedule_constraints_on_domain (*isl_pointers__.p_isl_schedule_constraints_on_domain)
|
||||||
|
+#define isl_schedule_constraints_set_coincidence (*isl_pointers__.p_isl_schedule_constraints_set_coincidence)
|
||||||
|
+#define isl_schedule_constraints_set_proximity (*isl_pointers__.p_isl_schedule_constraints_set_proximity)
|
||||||
|
+#define isl_schedule_constraints_set_validity (*isl_pointers__.p_isl_schedule_constraints_set_validity)
|
||||||
|
+#define isl_set_get_dim_id (*isl_pointers__.p_isl_set_get_dim_id)
|
||||||
|
+#define isl_set_max_val (*isl_pointers__.p_isl_set_max_val)
|
||||||
|
+#define isl_set_min_val (*isl_pointers__.p_isl_set_min_val)
|
||||||
|
+#define isl_set_params (*isl_pointers__.p_isl_set_params)
|
||||||
|
+#define isl_space_align_params (*isl_pointers__.p_isl_space_align_params)
|
||||||
|
+#define isl_space_map_from_domain_and_range (*isl_pointers__.p_isl_space_map_from_domain_and_range)
|
||||||
|
+#define isl_space_set_tuple_name (*isl_pointers__.p_isl_space_set_tuple_name)
|
||||||
|
+#define isl_space_wrap (*isl_pointers__.p_isl_space_wrap)
|
||||||
|
+#define isl_union_map_from_domain_and_range (*isl_pointers__.p_isl_union_map_from_domain_and_range)
|
||||||
|
+#define isl_union_map_range (*isl_pointers__.p_isl_union_map_range)
|
||||||
|
+#define isl_union_set_union (*isl_pointers__.p_isl_union_set_union)
|
||||||
|
+#define isl_union_set_universe (*isl_pointers__.p_isl_union_set_universe)
|
||||||
|
+#define isl_val_2exp (*isl_pointers__.p_isl_val_2exp)
|
||||||
|
+#define isl_val_add_ui (*isl_pointers__.p_isl_val_add_ui)
|
||||||
|
+#define isl_val_copy (*isl_pointers__.p_isl_val_copy)
|
||||||
|
+#define isl_val_free (*isl_pointers__.p_isl_val_free)
|
||||||
|
+#define isl_val_int_from_si (*isl_pointers__.p_isl_val_int_from_si)
|
||||||
|
+#define isl_val_int_from_ui (*isl_pointers__.p_isl_val_int_from_ui)
|
||||||
|
+#define isl_val_mul (*isl_pointers__.p_isl_val_mul)
|
||||||
|
+#define isl_val_neg (*isl_pointers__.p_isl_val_neg)
|
||||||
|
+#define isl_val_sub (*isl_pointers__.p_isl_val_sub)
|
||||||
|
+#define isl_printer_print_union_map (*isl_pointers__.p_isl_printer_print_union_map)
|
||||||
|
+#define isl_pw_aff_get_ctx (*isl_pointers__.p_isl_pw_aff_get_ctx)
|
||||||
|
+#define isl_val_is_int (*isl_pointers__.p_isl_val_is_int)
|
||||||
|
+#define isl_ctx_get_max_operations (*isl_pointers__.p_isl_ctx_get_max_operations)
|
||||||
|
+#define isl_ctx_set_max_operations (*isl_pointers__.p_isl_ctx_set_max_operations)
|
||||||
|
+#define isl_ctx_last_error (*isl_pointers__.p_isl_ctx_last_error)
|
||||||
|
+#define isl_ctx_reset_operations (*isl_pointers__.p_isl_ctx_reset_operations)
|
||||||
|
+#define isl_map_coalesce (*isl_pointers__.p_isl_map_coalesce)
|
||||||
|
+#define isl_printer_print_schedule (*isl_pointers__.p_isl_printer_print_schedule)
|
||||||
|
+#define isl_set_set_dim_id (*isl_pointers__.p_isl_set_set_dim_id)
|
||||||
|
+#define isl_union_map_coalesce (*isl_pointers__.p_isl_union_map_coalesce)
|
||||||
|
+#define isl_multi_val_set_val (*isl_pointers__.p_isl_multi_val_set_val)
|
||||||
|
+#define isl_multi_val_zero (*isl_pointers__.p_isl_multi_val_zero)
|
||||||
|
+#define isl_options_set_schedule_max_coefficient (*isl_pointers__.p_isl_options_set_schedule_max_coefficient)
|
||||||
|
+#define isl_options_set_tile_scale_tile_loops (*isl_pointers__.p_isl_options_set_tile_scale_tile_loops)
|
||||||
|
+#define isl_schedule_copy (*isl_pointers__.p_isl_schedule_copy)
|
||||||
|
+#define isl_schedule_get_map (*isl_pointers__.p_isl_schedule_get_map)
|
||||||
|
+#define isl_schedule_map_schedule_node_bottom_up (*isl_pointers__.p_isl_schedule_map_schedule_node_bottom_up)
|
||||||
|
+#define isl_schedule_node_band_get_permutable (*isl_pointers__.p_isl_schedule_node_band_get_permutable)
|
||||||
|
+#define isl_schedule_node_band_get_space (*isl_pointers__.p_isl_schedule_node_band_get_space)
|
||||||
|
+#define isl_schedule_node_band_tile (*isl_pointers__.p_isl_schedule_node_band_tile)
|
||||||
|
+#define isl_schedule_node_child (*isl_pointers__.p_isl_schedule_node_child)
|
||||||
|
+#define isl_schedule_node_free (*isl_pointers__.p_isl_schedule_node_free)
|
||||||
|
+#define isl_schedule_node_get_child (*isl_pointers__.p_isl_schedule_node_get_child)
|
||||||
|
+#define isl_schedule_node_get_ctx (*isl_pointers__.p_isl_schedule_node_get_ctx)
|
||||||
|
+#define isl_schedule_node_get_type (*isl_pointers__.p_isl_schedule_node_get_type)
|
||||||
|
+#define isl_schedule_node_n_children (*isl_pointers__.p_isl_schedule_node_n_children)
|
||||||
|
+#define isl_union_map_is_equal (*isl_pointers__.p_isl_union_map_is_equal)
|
||||||
|
+#define isl_union_access_info_compute_flow (*isl_pointers__.p_isl_union_access_info_compute_flow)
|
||||||
|
+#define isl_union_access_info_from_sink (*isl_pointers__.p_isl_union_access_info_from_sink)
|
||||||
|
+#define isl_union_access_info_set_may_source (*isl_pointers__.p_isl_union_access_info_set_may_source)
|
||||||
|
+#define isl_union_access_info_set_must_source (*isl_pointers__.p_isl_union_access_info_set_must_source)
|
||||||
|
+#define isl_union_access_info_set_schedule (*isl_pointers__.p_isl_union_access_info_set_schedule)
|
||||||
|
+#define isl_union_flow_free (*isl_pointers__.p_isl_union_flow_free)
|
||||||
|
+#define isl_union_flow_get_may_dependence (*isl_pointers__.p_isl_union_flow_get_may_dependence)
|
||||||
|
+#define isl_union_flow_get_must_dependence (*isl_pointers__.p_isl_union_flow_get_must_dependence)
|
||||||
|
+#define isl_aff_var_on_domain (*isl_pointers__.p_isl_aff_var_on_domain)
|
||||||
|
+#define isl_multi_aff_from_aff (*isl_pointers__.p_isl_multi_aff_from_aff)
|
||||||
|
+#define isl_schedule_get_ctx (*isl_pointers__.p_isl_schedule_get_ctx)
|
||||||
|
+#define isl_multi_aff_set_tuple_id (*isl_pointers__.p_isl_multi_aff_set_tuple_id)
|
||||||
|
+#define isl_multi_aff_dim (*isl_pointers__.p_isl_multi_aff_dim)
|
||||||
|
+#define isl_schedule_get_domain (*isl_pointers__.p_isl_schedule_get_domain)
|
||||||
|
+#define isl_union_set_is_empty (*isl_pointers__.p_isl_union_set_is_empty)
|
||||||
|
+#define isl_union_set_get_space (*isl_pointers__.p_isl_union_set_get_space)
|
||||||
|
+#define isl_union_pw_multi_aff_empty (*isl_pointers__.p_isl_union_pw_multi_aff_empty)
|
||||||
|
+#define isl_union_set_foreach_set (*isl_pointers__.p_isl_union_set_foreach_set)
|
||||||
|
+#define isl_union_set_free (*isl_pointers__.p_isl_union_set_free)
|
||||||
|
+#define isl_multi_union_pw_aff_from_union_pw_multi_aff (*isl_pointers__.p_isl_multi_union_pw_aff_from_union_pw_multi_aff)
|
||||||
|
+#define isl_multi_union_pw_aff_apply_multi_aff (*isl_pointers__.p_isl_multi_union_pw_aff_apply_multi_aff)
|
||||||
|
+#define isl_schedule_insert_partial_schedule (*isl_pointers__.p_isl_schedule_insert_partial_schedule)
|
||||||
|
+#define isl_union_pw_multi_aff_free (*isl_pointers__.p_isl_union_pw_multi_aff_free)
|
||||||
|
+#define isl_pw_multi_aff_project_out_map (*isl_pointers__.p_isl_pw_multi_aff_project_out_map)
|
||||||
|
+#define isl_union_pw_multi_aff_add_pw_multi_aff (*isl_pointers__.p_isl_union_pw_multi_aff_add_pw_multi_aff)
|
||||||
|
+#define isl_schedule_from_domain (*isl_pointers__.p_isl_schedule_from_domain)
|
||||||
|
+#define isl_schedule_sequence (*isl_pointers__.p_isl_schedule_sequence)
|
||||||
|
+#define isl_ast_build_node_from_schedule (*isl_pointers__.p_isl_ast_build_node_from_schedule)
|
||||||
|
+#define isl_ast_node_mark_get_node (*isl_pointers__.p_isl_ast_node_mark_get_node)
|
||||||
|
+#define isl_schedule_node_band_member_get_ast_loop_type (*isl_pointers__.p_isl_schedule_node_band_member_get_ast_loop_type)
|
||||||
|
+#define isl_schedule_node_band_member_set_ast_loop_type (*isl_pointers__.p_isl_schedule_node_band_member_set_ast_loop_type)
|
||||||
|
+#define isl_val_n_abs_num_chunks (*isl_pointers__.p_isl_val_n_abs_num_chunks)
|
||||||
|
+#define isl_val_get_abs_num_chunks (*isl_pointers__.p_isl_val_get_abs_num_chunks)
|
||||||
|
+#define isl_val_int_from_chunks (*isl_pointers__.p_isl_val_int_from_chunks)
|
||||||
|
+#define isl_val_is_neg (*isl_pointers__.p_isl_val_is_neg)
|
||||||
|
+#define isl_version (*isl_pointers__.p_isl_version)
|
||||||
|
+#define isl_options_get_on_error (*isl_pointers__.p_isl_options_get_on_error)
|
||||||
|
+#define isl_ctx_reset_error (*isl_pointers__.p_isl_ctx_reset_error)
|
||||||
|
+
|
||||||
|
typedef struct poly_dr *poly_dr_p;
|
||||||
|
|
||||||
|
typedef struct poly_bb *poly_bb_p;
|
||||||
|
@@ -448,5 +1033,6 @@ extern tree cached_scalar_evolution_in_r
|
||||||
|
extern void dot_all_sese (FILE *, vec<sese_l> &);
|
||||||
|
extern void dot_sese (sese_l &);
|
||||||
|
extern void dot_cfg ();
|
||||||
|
+extern const char *get_isl_version (bool);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
--- gcc/graphite.cc.jj 2015-11-04 14:15:32.000000000 +0100
|
||||||
|
+++ gcc/graphite.cc 2015-11-04 14:56:02.645536409 +0100
|
||||||
|
@@ -60,6 +60,35 @@ along with GCC; see the file COPYING3.
|
||||||
|
#include "tree-into-ssa.h"
|
||||||
|
#include "graphite.h"
|
||||||
|
|
||||||
|
+__typeof (isl_pointers__) isl_pointers__;
|
||||||
|
+
|
||||||
|
+static bool
|
||||||
|
+init_isl_pointers (void)
|
||||||
|
+{
|
||||||
|
+ void *h;
|
||||||
|
+
|
||||||
|
+ if (isl_pointers__.inited)
|
||||||
|
+ return isl_pointers__.h != NULL;
|
||||||
|
+ h = dlopen ("libisl.so.15", RTLD_LAZY);
|
||||||
|
+ isl_pointers__.h = h;
|
||||||
|
+ if (h == NULL)
|
||||||
|
+ return false;
|
||||||
|
+#define DYNSYM(x) \
|
||||||
|
+ do \
|
||||||
|
+ { \
|
||||||
|
+ union { __typeof (isl_pointers__.p_##x) p; void *q; } u; \
|
||||||
|
+ u.q = dlsym (h, #x); \
|
||||||
|
+ if (u.q == NULL) \
|
||||||
|
+ return false; \
|
||||||
|
+ isl_pointers__.p_##x = u.p; \
|
||||||
|
+ } \
|
||||||
|
+ while (0)
|
||||||
|
+ DYNSYMS
|
||||||
|
+#undef DYNSYM
|
||||||
|
+ isl_pointers__.inited = true;
|
||||||
|
+ return true;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/* Print global statistics to FILE. */
|
||||||
|
|
||||||
|
static void
|
||||||
|
@@ -365,6 +394,15 @@ graphite_transform_loops (void)
|
||||||
|
if (parallelized_function_p (cfun->decl))
|
||||||
|
return;
|
||||||
|
|
||||||
|
+ if (number_of_loops (cfun) <= 1)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ if (!init_isl_pointers ())
|
||||||
|
+ {
|
||||||
|
+ sorry ("Graphite loop optimizations cannot be used");
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
calculate_dominance_info (CDI_DOMINATORS);
|
||||||
|
|
||||||
|
/* We rely on post-dominators during merging of SESE regions so those
|
||||||
|
@@ -455,6 +493,14 @@ graphite_transform_loops (void)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+const char *
|
||||||
|
+get_isl_version (bool force)
|
||||||
|
+{
|
||||||
|
+ if (force)
|
||||||
|
+ init_isl_pointers ();
|
||||||
|
+ return (isl_pointers__.inited && isl_version) ? isl_version () : "none";
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
#else /* If isl is not available: #ifndef HAVE_isl. */
|
||||||
|
|
||||||
|
static void
|
||||||
|
--- gcc/toplev.cc.jj 2017-02-19 13:02:31.000000000 +0100
|
||||||
|
+++ gcc/toplev.cc 2017-02-19 16:50:25.536301350 +0100
|
||||||
|
@@ -94,6 +94,7 @@ along with GCC; see the file COPYING3.
|
||||||
|
|
||||||
|
#ifdef HAVE_isl
|
||||||
|
#include <isl/version.h>
|
||||||
|
+extern const char *get_isl_version (bool);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void general_init (const char *, bool);
|
||||||
|
@@ -683,7 +684,7 @@ print_version (FILE *file, const char *i
|
||||||
|
#ifndef HAVE_isl
|
||||||
|
"none"
|
||||||
|
#else
|
||||||
|
- isl_version ()
|
||||||
|
+ get_isl_version (*indent == 0)
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
if (strcmp (GCC_GMP_STRINGIFY_VERSION, gmp_version))
|
71
SOURCES/gcc12-isl-dl2.patch
Normal file
71
SOURCES/gcc12-isl-dl2.patch
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
2011-04-04 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* toplev.cc (toplev_main_argv): New variable.
|
||||||
|
(toplev_main): Initialize it.
|
||||||
|
* graphite.cc (init_isl_pointers): Load libisl.so.15 from gcc's private
|
||||||
|
directory.
|
||||||
|
|
||||||
|
--- gcc/toplev.cc.jj 2008-12-09 23:59:10.000000000 +0100
|
||||||
|
+++ gcc/toplev.cc 2009-01-27 14:33:52.000000000 +0100
|
||||||
|
@@ -113,6 +113,8 @@ static void finalize (bool);
|
||||||
|
static void crash_signal (int) ATTRIBUTE_NORETURN;
|
||||||
|
static void compile_file (void);
|
||||||
|
|
||||||
|
+const char **toplev_main_argv;
|
||||||
|
+
|
||||||
|
/* Decoded options, and number of such options. */
|
||||||
|
struct cl_decoded_option *save_decoded_options;
|
||||||
|
unsigned int save_decoded_options_count;
|
||||||
|
@@ -2239,6 +2241,8 @@ toplev::main (int argc, char **argv)
|
||||||
|
|
||||||
|
expandargv (&argc, &argv);
|
||||||
|
|
||||||
|
+ toplev_main_argv = CONST_CAST2 (const char **, char **, argv);
|
||||||
|
+
|
||||||
|
/* Initialization of GCC's environment, and diagnostics. */
|
||||||
|
general_init (argv[0], m_init_signals);
|
||||||
|
|
||||||
|
--- gcc/graphite.cc.jj 2010-12-01 10:24:32.000000000 -0500
|
||||||
|
+++ gcc/graphite.cc 2010-12-01 11:46:07.832118193 -0500
|
||||||
|
@@ -64,11 +64,39 @@ __typeof (isl_pointers__) isl_pointers__
|
||||||
|
static bool
|
||||||
|
init_isl_pointers (void)
|
||||||
|
{
|
||||||
|
- void *h;
|
||||||
|
+ void *h = NULL;
|
||||||
|
+ extern const char **toplev_main_argv;
|
||||||
|
+ char *buf, *p;
|
||||||
|
+ size_t len;
|
||||||
|
|
||||||
|
if (isl_pointers__.inited)
|
||||||
|
return isl_pointers__.h != NULL;
|
||||||
|
- h = dlopen ("libisl.so.15", RTLD_LAZY);
|
||||||
|
+ len = progname - toplev_main_argv[0];
|
||||||
|
+ buf = XALLOCAVAR (char, len + sizeof "libisl.so.15");
|
||||||
|
+ memcpy (buf, toplev_main_argv[0], len);
|
||||||
|
+ strcpy (buf + len, "libisl.so.15");
|
||||||
|
+ len += sizeof "libisl.so.15";
|
||||||
|
+ p = strstr (buf, "/libexec/");
|
||||||
|
+ if (p != NULL)
|
||||||
|
+ {
|
||||||
|
+ while (1)
|
||||||
|
+ {
|
||||||
|
+ char *q = strstr (p + 8, "/libexec/");
|
||||||
|
+ if (q == NULL)
|
||||||
|
+ break;
|
||||||
|
+ p = q;
|
||||||
|
+ }
|
||||||
|
+ memmove (p + 4, p + 8, len - (p + 8 - buf));
|
||||||
|
+ h = dlopen (buf, RTLD_LAZY);
|
||||||
|
+ if (h == NULL)
|
||||||
|
+ {
|
||||||
|
+ len = progname - toplev_main_argv[0];
|
||||||
|
+ memcpy (buf, toplev_main_argv[0], len);
|
||||||
|
+ strcpy (buf + len, "libisl.so.15");
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ if (h == NULL)
|
||||||
|
+ h = dlopen (buf, RTLD_LAZY);
|
||||||
|
isl_pointers__.h = h;
|
||||||
|
if (h == NULL)
|
||||||
|
return false;
|
671
SOURCES/gcc12-libgfortran-compat.patch
Normal file
671
SOURCES/gcc12-libgfortran-compat.patch
Normal file
@ -0,0 +1,671 @@
|
|||||||
|
--- libgfortran/Makefile.am.jj 2022-04-28 15:56:10.129745930 +0200
|
||||||
|
+++ libgfortran/Makefile.am 2022-05-13 13:27:57.237167557 +0200
|
||||||
|
@@ -45,6 +45,7 @@ LTLDFLAGS = $(shell $(SHELL) $(top_srcdi
|
||||||
|
$(lt_host_flags)
|
||||||
|
|
||||||
|
toolexeclib_LTLIBRARIES = libgfortran.la
|
||||||
|
+noinst_LTLIBRARIES = libgfortran_nonshared80.la
|
||||||
|
toolexeclib_DATA = libgfortran.spec
|
||||||
|
libgfortran_la_LINK = $(LINK) $(libgfortran_la_LDFLAGS)
|
||||||
|
libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
|
||||||
|
@@ -1154,6 +1155,91 @@ libgfortran_la_SOURCES = $(prereq_SRC)
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
+$(patsubst %.c,%.lo,$(nonshared_generated_C_SRC) $(nonshared)): \
|
||||||
|
+nonshared-%.lo: $(srcdir)/generated/%.c
|
||||||
|
+ $(LTCOMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
|
||||||
|
+
|
||||||
|
+$(patsubst %.c,%.o,$(nonshared_generated_C_SRC) $(nonshared)): \
|
||||||
|
+nonshared-%.o: $(srcdir)/generated/%.c
|
||||||
|
+ $(COMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
|
||||||
|
+
|
||||||
|
+$(patsubst %.c,%.lo,$(nonshared_intrinsics_C_SRC) $(nonshared)): \
|
||||||
|
+nonshared-%.lo: $(srcdir)/intrinsics/%.c
|
||||||
|
+ $(LTCOMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
|
||||||
|
+
|
||||||
|
+$(patsubst %.c,%.o,$(nonshared_intrinsics_C_SRC) $(nonshared)): \
|
||||||
|
+nonshared-%.o: $(srcdir)/intrinsics/%.c
|
||||||
|
+ $(COMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
|
||||||
|
+
|
||||||
|
+$(patsubst %.c,%.lo,$(nonshared_runtime_C_SRC) $(nonshared)): \
|
||||||
|
+nonshared-%.lo: $(srcdir)/runtime/%.c
|
||||||
|
+ $(LTCOMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
|
||||||
|
+
|
||||||
|
+$(patsubst %.c,%.o,$(nonshared_runtime_C_SRC) $(nonshared)): \
|
||||||
|
+nonshared-%.o: $(srcdir)/runtime/%.c
|
||||||
|
+ $(COMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
|
||||||
|
+
|
||||||
|
+$(patsubst %.f90,%.lo,$(nonshared_intrinsics_f90_SRC) $(nonshared)): \
|
||||||
|
+nonshared-%.lo: $(srcdir)/intrinsics/%.f90
|
||||||
|
+ $(LTPPFCCOMPILE) -c -o $@ $< -fallow-leading-underscore
|
||||||
|
+
|
||||||
|
+$(patsubst %.f90,%.o,$(nonshared_intrinsics_f90_SRC) $(nonshared)): \
|
||||||
|
+nonshared-%.o: $(srcdir)/intrinsics/%.f90
|
||||||
|
+ $(PPFCCOMPILE) -c -o $@ $< -fallow-leading-underscore
|
||||||
|
+
|
||||||
|
+nonshared_runtime_C_SRC = \
|
||||||
|
+nonshared-ISO_Fortran_binding.c
|
||||||
|
+
|
||||||
|
+nonshared_generated_C_SRC = \
|
||||||
|
+nonshared-findloc0_i1.c \
|
||||||
|
+nonshared-findloc0_i2.c \
|
||||||
|
+nonshared-findloc0_i4.c \
|
||||||
|
+nonshared-findloc0_i8.c \
|
||||||
|
+nonshared-findloc0_i16.c \
|
||||||
|
+nonshared-findloc0_r4.c \
|
||||||
|
+nonshared-findloc0_r8.c \
|
||||||
|
+nonshared-findloc0_r10.c \
|
||||||
|
+nonshared-findloc0_r16.c \
|
||||||
|
+nonshared-findloc0_c4.c \
|
||||||
|
+nonshared-findloc0_c8.c \
|
||||||
|
+nonshared-findloc0_c10.c \
|
||||||
|
+nonshared-findloc0_c16.c \
|
||||||
|
+nonshared-findloc0_s1.c \
|
||||||
|
+nonshared-findloc0_s4.c \
|
||||||
|
+nonshared-findloc1_i1.c \
|
||||||
|
+nonshared-findloc1_i2.c \
|
||||||
|
+nonshared-findloc1_i4.c \
|
||||||
|
+nonshared-findloc1_i8.c \
|
||||||
|
+nonshared-findloc1_i16.c \
|
||||||
|
+nonshared-findloc1_r4.c \
|
||||||
|
+nonshared-findloc1_r8.c \
|
||||||
|
+nonshared-findloc1_r10.c \
|
||||||
|
+nonshared-findloc1_r16.c \
|
||||||
|
+nonshared-findloc1_c4.c \
|
||||||
|
+nonshared-findloc1_c8.c \
|
||||||
|
+nonshared-findloc1_c10.c \
|
||||||
|
+nonshared-findloc1_c16.c \
|
||||||
|
+nonshared-findloc1_s1.c \
|
||||||
|
+nonshared-findloc1_s4.c \
|
||||||
|
+nonshared-findloc2_s1.c \
|
||||||
|
+nonshared-findloc2_s4.c
|
||||||
|
+
|
||||||
|
+nonshared_intrinsics_C_SRC = \
|
||||||
|
+nonshared-is_contiguous.c \
|
||||||
|
+nonshared-trigd.c
|
||||||
|
+
|
||||||
|
+nonshared_intrinsics_f90_SRC = \
|
||||||
|
+nonshared-random_init.f90
|
||||||
|
+
|
||||||
|
+libgfortran_nonshared80_la_SOURCES = \
|
||||||
|
+$(nonshared_runtime_C_SRC) \
|
||||||
|
+$(nonshared_generated_C_SRC) \
|
||||||
|
+$(nonshared_intrinsics_C_SRC) \
|
||||||
|
+$(nonshared_intrinsics_f90_SRC) \
|
||||||
|
+$(srcdir)/ieee/nonshared-ieee_arithmetic.c \
|
||||||
|
+$(srcdir)/io/nonshared-transfer.c \
|
||||||
|
+$(srcdir)/runtime/nonshared-error.c
|
||||||
|
+
|
||||||
|
I_M4_DEPS=m4/iparm.m4 m4/mtype.m4
|
||||||
|
I_M4_DEPS0=$(I_M4_DEPS) m4/iforeach.m4
|
||||||
|
I_M4_DEPS1=$(I_M4_DEPS) m4/ifunction.m4
|
||||||
|
--- libgfortran/ieee/nonshared-ieee_arithmetic.c.jj 2022-05-13 13:22:46.612357695 +0200
|
||||||
|
+++ libgfortran/ieee/nonshared-ieee_arithmetic.c 2022-05-13 13:22:46.612357695 +0200
|
||||||
|
@@ -0,0 +1,64 @@
|
||||||
|
+/* Helper functions in C for IEEE modules
|
||||||
|
+ Copyright (C) 2013-2022 Free Software Foundation, Inc.
|
||||||
|
+ Contributed by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
|
||||||
|
+
|
||||||
|
+This file is part of the GNU Fortran runtime library (libgfortran).
|
||||||
|
+
|
||||||
|
+Libgfortran is free software; you can redistribute it and/or
|
||||||
|
+modify it under the terms of the GNU General Public
|
||||||
|
+License as published by the Free Software Foundation; either
|
||||||
|
+version 3 of the License, or (at your option) any later version.
|
||||||
|
+
|
||||||
|
+Libgfortran is distributed in the hope that it will be useful,
|
||||||
|
+but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
+GNU General Public License for more details.
|
||||||
|
+
|
||||||
|
+Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
+permissions described in the GCC Runtime Library Exception, version
|
||||||
|
+3.1, as published by the Free Software Foundation.
|
||||||
|
+
|
||||||
|
+You should have received a copy of the GNU General Public License and
|
||||||
|
+a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
+<http://www.gnu.org/licenses/>. */
|
||||||
|
+
|
||||||
|
+#include "libgfortran.h"
|
||||||
|
+
|
||||||
|
+GFC_LOGICAL_4
|
||||||
|
+__ieee_arithmetic_MOD_ieee_support_subnormal_4 (gfc_array_r4 *arg)
|
||||||
|
+{
|
||||||
|
+ (void) arg;
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+GFC_LOGICAL_4
|
||||||
|
+__ieee_arithmetic_MOD_ieee_support_subnormal_8 (gfc_array_r8 *arg)
|
||||||
|
+{
|
||||||
|
+ (void) arg;
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+#ifdef HAVE_GFC_REAL_10
|
||||||
|
+GFC_LOGICAL_4
|
||||||
|
+__ieee_arithmetic_MOD_ieee_support_subnormal_10 (gfc_array_r10 *arg)
|
||||||
|
+{
|
||||||
|
+ (void) arg;
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#ifdef HAVE_GFC_REAL_16
|
||||||
|
+GFC_LOGICAL_4
|
||||||
|
+__ieee_arithmetic_MOD_ieee_support_subnormal_16 (gfc_array_r16 *arg)
|
||||||
|
+{
|
||||||
|
+ (void) arg;
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+GFC_LOGICAL_4
|
||||||
|
+__ieee_arithmetic_MOD_ieee_support_subnormal_noarg (void)
|
||||||
|
+{
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
--- libgfortran/Makefile.in.jj 2022-04-28 15:56:10.132745889 +0200
|
||||||
|
+++ libgfortran/Makefile.in 2022-05-13 13:28:10.925982986 +0200
|
||||||
|
@@ -217,7 +217,8 @@ am__uninstall_files_from_dir = { \
|
||||||
|
am__installdirs = "$(DESTDIR)$(cafexeclibdir)" \
|
||||||
|
"$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibdir)" \
|
||||||
|
"$(DESTDIR)$(gfor_cdir)" "$(DESTDIR)$(fincludedir)"
|
||||||
|
-LTLIBRARIES = $(cafexeclib_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
|
||||||
|
+LTLIBRARIES = $(cafexeclib_LTLIBRARIES) $(noinst_LTLIBRARIES) \
|
||||||
|
+ $(toolexeclib_LTLIBRARIES)
|
||||||
|
libcaf_single_la_LIBADD =
|
||||||
|
am_libcaf_single_la_OBJECTS = single.lo
|
||||||
|
libcaf_single_la_OBJECTS = $(am_libcaf_single_la_OBJECTS)
|
||||||
|
@@ -487,6 +488,36 @@ am__objects_65 = $(am__objects_3) $(am__
|
||||||
|
@onestep_FALSE@am_libgfortran_la_OBJECTS = $(am__objects_65)
|
||||||
|
@onestep_TRUE@am_libgfortran_la_OBJECTS = libgfortran_c.lo
|
||||||
|
libgfortran_la_OBJECTS = $(am_libgfortran_la_OBJECTS)
|
||||||
|
+libgfortran_nonshared80_la_LIBADD =
|
||||||
|
+am__objects_66 = nonshared-ISO_Fortran_binding.lo
|
||||||
|
+am__objects_67 = nonshared-findloc0_i1.lo nonshared-findloc0_i2.lo \
|
||||||
|
+ nonshared-findloc0_i4.lo nonshared-findloc0_i8.lo \
|
||||||
|
+ nonshared-findloc0_i16.lo nonshared-findloc0_r4.lo \
|
||||||
|
+ nonshared-findloc0_r8.lo nonshared-findloc0_r10.lo \
|
||||||
|
+ nonshared-findloc0_r16.lo nonshared-findloc0_c4.lo \
|
||||||
|
+ nonshared-findloc0_c8.lo nonshared-findloc0_c10.lo \
|
||||||
|
+ nonshared-findloc0_c16.lo nonshared-findloc0_s1.lo \
|
||||||
|
+ nonshared-findloc0_s4.lo nonshared-findloc1_i1.lo \
|
||||||
|
+ nonshared-findloc1_i2.lo nonshared-findloc1_i4.lo \
|
||||||
|
+ nonshared-findloc1_i8.lo nonshared-findloc1_i16.lo \
|
||||||
|
+ nonshared-findloc1_r4.lo nonshared-findloc1_r8.lo \
|
||||||
|
+ nonshared-findloc1_r10.lo nonshared-findloc1_r16.lo \
|
||||||
|
+ nonshared-findloc1_c4.lo nonshared-findloc1_c8.lo \
|
||||||
|
+ nonshared-findloc1_c10.lo nonshared-findloc1_c16.lo \
|
||||||
|
+ nonshared-findloc1_s1.lo nonshared-findloc1_s4.lo \
|
||||||
|
+ nonshared-findloc2_s1.lo nonshared-findloc2_s4.lo
|
||||||
|
+am__objects_68 = nonshared-is_contiguous.lo nonshared-trigd.lo
|
||||||
|
+am__objects_69 = nonshared-random_init.lo
|
||||||
|
+am_libgfortran_nonshared80_la_OBJECTS = $(am__objects_66) \
|
||||||
|
+ $(am__objects_67) $(am__objects_68) $(am__objects_69) \
|
||||||
|
+ nonshared-ieee_arithmetic.lo nonshared-transfer.lo \
|
||||||
|
+ nonshared-error.lo
|
||||||
|
+libgfortran_nonshared80_la_OBJECTS = \
|
||||||
|
+ $(am_libgfortran_nonshared80_la_OBJECTS)
|
||||||
|
+AM_V_lt = $(am__v_lt_@AM_V@)
|
||||||
|
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||||
|
+am__v_lt_0 = --silent
|
||||||
|
+am__v_lt_1 =
|
||||||
|
AM_V_P = $(am__v_P_@AM_V@)
|
||||||
|
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||||
|
am__v_P_0 = false
|
||||||
|
@@ -503,10 +534,6 @@ DEFAULT_INCLUDES = -I.@am__isrc@
|
||||||
|
depcomp = $(SHELL) $(top_srcdir)/../depcomp
|
||||||
|
am__depfiles_maybe = depfiles
|
||||||
|
am__mv = mv -f
|
||||||
|
-AM_V_lt = $(am__v_lt_@AM_V@)
|
||||||
|
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||||
|
-am__v_lt_0 = --silent
|
||||||
|
-am__v_lt_1 =
|
||||||
|
PPFCCOMPILE = $(FC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||||
|
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
|
||||||
|
LTPPFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
|
||||||
|
@@ -550,7 +577,8 @@ AM_V_FC = $(am__v_FC_@AM_V@)
|
||||||
|
am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@)
|
||||||
|
am__v_FC_0 = @echo " FC " $@;
|
||||||
|
am__v_FC_1 =
|
||||||
|
-SOURCES = $(libcaf_single_la_SOURCES) $(libgfortran_la_SOURCES)
|
||||||
|
+SOURCES = $(libcaf_single_la_SOURCES) $(libgfortran_la_SOURCES) \
|
||||||
|
+ $(libgfortran_nonshared80_la_SOURCES)
|
||||||
|
am__can_run_installinfo = \
|
||||||
|
case $$AM_UPDATE_INFO_DIR in \
|
||||||
|
n|no|NO) false;; \
|
||||||
|
@@ -754,6 +782,7 @@ LTLDFLAGS = $(shell $(SHELL) $(top_srcdi
|
||||||
|
$(lt_host_flags)
|
||||||
|
|
||||||
|
toolexeclib_LTLIBRARIES = libgfortran.la
|
||||||
|
+noinst_LTLIBRARIES = libgfortran_nonshared80.la
|
||||||
|
toolexeclib_DATA = libgfortran.spec
|
||||||
|
libgfortran_la_LINK = $(LINK) $(libgfortran_la_LDFLAGS)
|
||||||
|
libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
|
||||||
|
@@ -1670,6 +1699,59 @@ prereq_SRC = $(gfor_src) $(gfor_built_sr
|
||||||
|
#libgfortran_F.lo:
|
||||||
|
# $(LTPPFCCOMPILE) -c -o $@ $^ -combine
|
||||||
|
@onestep_TRUE@libgfortran_la_SOURCES = libgfortran_c.c $(filter-out %.c,$(prereq_SRC))
|
||||||
|
+nonshared_runtime_C_SRC = \
|
||||||
|
+nonshared-ISO_Fortran_binding.c
|
||||||
|
+
|
||||||
|
+nonshared_generated_C_SRC = \
|
||||||
|
+nonshared-findloc0_i1.c \
|
||||||
|
+nonshared-findloc0_i2.c \
|
||||||
|
+nonshared-findloc0_i4.c \
|
||||||
|
+nonshared-findloc0_i8.c \
|
||||||
|
+nonshared-findloc0_i16.c \
|
||||||
|
+nonshared-findloc0_r4.c \
|
||||||
|
+nonshared-findloc0_r8.c \
|
||||||
|
+nonshared-findloc0_r10.c \
|
||||||
|
+nonshared-findloc0_r16.c \
|
||||||
|
+nonshared-findloc0_c4.c \
|
||||||
|
+nonshared-findloc0_c8.c \
|
||||||
|
+nonshared-findloc0_c10.c \
|
||||||
|
+nonshared-findloc0_c16.c \
|
||||||
|
+nonshared-findloc0_s1.c \
|
||||||
|
+nonshared-findloc0_s4.c \
|
||||||
|
+nonshared-findloc1_i1.c \
|
||||||
|
+nonshared-findloc1_i2.c \
|
||||||
|
+nonshared-findloc1_i4.c \
|
||||||
|
+nonshared-findloc1_i8.c \
|
||||||
|
+nonshared-findloc1_i16.c \
|
||||||
|
+nonshared-findloc1_r4.c \
|
||||||
|
+nonshared-findloc1_r8.c \
|
||||||
|
+nonshared-findloc1_r10.c \
|
||||||
|
+nonshared-findloc1_r16.c \
|
||||||
|
+nonshared-findloc1_c4.c \
|
||||||
|
+nonshared-findloc1_c8.c \
|
||||||
|
+nonshared-findloc1_c10.c \
|
||||||
|
+nonshared-findloc1_c16.c \
|
||||||
|
+nonshared-findloc1_s1.c \
|
||||||
|
+nonshared-findloc1_s4.c \
|
||||||
|
+nonshared-findloc2_s1.c \
|
||||||
|
+nonshared-findloc2_s4.c
|
||||||
|
+
|
||||||
|
+nonshared_intrinsics_C_SRC = \
|
||||||
|
+nonshared-is_contiguous.c \
|
||||||
|
+nonshared-trigd.c
|
||||||
|
+
|
||||||
|
+nonshared_intrinsics_f90_SRC = \
|
||||||
|
+nonshared-random_init.f90
|
||||||
|
+
|
||||||
|
+libgfortran_nonshared80_la_SOURCES = \
|
||||||
|
+$(nonshared_runtime_C_SRC) \
|
||||||
|
+$(nonshared_generated_C_SRC) \
|
||||||
|
+$(nonshared_intrinsics_C_SRC) \
|
||||||
|
+$(nonshared_intrinsics_f90_SRC) \
|
||||||
|
+$(srcdir)/ieee/nonshared-ieee_arithmetic.c \
|
||||||
|
+$(srcdir)/io/nonshared-transfer.c \
|
||||||
|
+$(srcdir)/runtime/nonshared-error.c
|
||||||
|
+
|
||||||
|
I_M4_DEPS = m4/iparm.m4 m4/mtype.m4
|
||||||
|
I_M4_DEPS0 = $(I_M4_DEPS) m4/iforeach.m4
|
||||||
|
I_M4_DEPS1 = $(I_M4_DEPS) m4/ifunction.m4
|
||||||
|
@@ -1780,6 +1862,17 @@ clean-cafexeclibLTLIBRARIES:
|
||||||
|
rm -f $${locs}; \
|
||||||
|
}
|
||||||
|
|
||||||
|
+clean-noinstLTLIBRARIES:
|
||||||
|
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
|
||||||
|
+ @list='$(noinst_LTLIBRARIES)'; \
|
||||||
|
+ locs=`for p in $$list; do echo $$p; done | \
|
||||||
|
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
|
||||||
|
+ sort -u`; \
|
||||||
|
+ test -z "$$locs" || { \
|
||||||
|
+ echo rm -f $${locs}; \
|
||||||
|
+ rm -f $${locs}; \
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
@list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \
|
||||||
|
@@ -1821,6 +1914,9 @@ libcaf_single.la: $(libcaf_single_la_OBJ
|
||||||
|
libgfortran.la: $(libgfortran_la_OBJECTS) $(libgfortran_la_DEPENDENCIES) $(EXTRA_libgfortran_la_DEPENDENCIES)
|
||||||
|
$(AM_V_GEN)$(libgfortran_la_LINK) -rpath $(toolexeclibdir) $(libgfortran_la_OBJECTS) $(libgfortran_la_LIBADD) $(LIBS)
|
||||||
|
|
||||||
|
+libgfortran_nonshared80.la: $(libgfortran_nonshared80_la_OBJECTS) $(libgfortran_nonshared80_la_DEPENDENCIES) $(EXTRA_libgfortran_nonshared80_la_DEPENDENCIES)
|
||||||
|
+ $(AM_V_FCLD)$(FCLINK) $(libgfortran_nonshared80_la_OBJECTS) $(libgfortran_nonshared80_la_LIBADD) $(LIBS)
|
||||||
|
+
|
||||||
|
mostlyclean-compile:
|
||||||
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
|
@@ -2272,6 +2368,44 @@ distclean-compile:
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minval_r8.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_alloc.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mvbits.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-ISO_Fortran_binding.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-error.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_c10.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_c16.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_c4.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_c8.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_i1.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_i16.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_i2.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_i4.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_i8.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_r10.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_r16.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_r4.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_r8.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_s1.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc0_s4.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_c10.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_c16.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_c4.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_c8.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_i1.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_i16.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_i2.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_i4.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_i8.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_r10.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_r16.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_r4.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_r8.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_s1.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc1_s4.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc2_s1.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-findloc2_s4.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-ieee_arithmetic.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-is_contiguous.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-transfer.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nonshared-trigd.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/norm2_r10.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/norm2_r16.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/norm2_r17.Plo@am__quote@
|
||||||
|
@@ -7316,6 +7450,27 @@ ieee_helper.lo: ieee/ieee_helper.c
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ieee_helper.lo `test -f 'ieee/ieee_helper.c' || echo '$(srcdir)/'`ieee/ieee_helper.c
|
||||||
|
|
||||||
|
+nonshared-ieee_arithmetic.lo: $(srcdir)/ieee/nonshared-ieee_arithmetic.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nonshared-ieee_arithmetic.lo -MD -MP -MF $(DEPDIR)/nonshared-ieee_arithmetic.Tpo -c -o nonshared-ieee_arithmetic.lo `test -f '$(srcdir)/ieee/nonshared-ieee_arithmetic.c' || echo '$(srcdir)/'`$(srcdir)/ieee/nonshared-ieee_arithmetic.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nonshared-ieee_arithmetic.Tpo $(DEPDIR)/nonshared-ieee_arithmetic.Plo
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(srcdir)/ieee/nonshared-ieee_arithmetic.c' object='nonshared-ieee_arithmetic.lo' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nonshared-ieee_arithmetic.lo `test -f '$(srcdir)/ieee/nonshared-ieee_arithmetic.c' || echo '$(srcdir)/'`$(srcdir)/ieee/nonshared-ieee_arithmetic.c
|
||||||
|
+
|
||||||
|
+nonshared-transfer.lo: $(srcdir)/io/nonshared-transfer.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nonshared-transfer.lo -MD -MP -MF $(DEPDIR)/nonshared-transfer.Tpo -c -o nonshared-transfer.lo `test -f '$(srcdir)/io/nonshared-transfer.c' || echo '$(srcdir)/'`$(srcdir)/io/nonshared-transfer.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nonshared-transfer.Tpo $(DEPDIR)/nonshared-transfer.Plo
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(srcdir)/io/nonshared-transfer.c' object='nonshared-transfer.lo' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nonshared-transfer.lo `test -f '$(srcdir)/io/nonshared-transfer.c' || echo '$(srcdir)/'`$(srcdir)/io/nonshared-transfer.c
|
||||||
|
+
|
||||||
|
+nonshared-error.lo: $(srcdir)/runtime/nonshared-error.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nonshared-error.lo -MD -MP -MF $(DEPDIR)/nonshared-error.Tpo -c -o nonshared-error.lo `test -f '$(srcdir)/runtime/nonshared-error.c' || echo '$(srcdir)/'`$(srcdir)/runtime/nonshared-error.c
|
||||||
|
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/nonshared-error.Tpo $(DEPDIR)/nonshared-error.Plo
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(srcdir)/runtime/nonshared-error.c' object='nonshared-error.lo' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nonshared-error.lo `test -f '$(srcdir)/runtime/nonshared-error.c' || echo '$(srcdir)/'`$(srcdir)/runtime/nonshared-error.c
|
||||||
|
+
|
||||||
|
.f90.o:
|
||||||
|
$(AM_V_FC)$(FCCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
@@ -7510,7 +7665,8 @@ maintainer-clean-generic:
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-cafexeclibLTLIBRARIES clean-generic clean-libtool \
|
||||||
|
- clean-local clean-toolexeclibLTLIBRARIES mostlyclean-am
|
||||||
|
+ clean-local clean-noinstLTLIBRARIES \
|
||||||
|
+ clean-toolexeclibLTLIBRARIES mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
|
@@ -7590,14 +7746,15 @@ uninstall-am: uninstall-cafexeclibLTLIBR
|
||||||
|
.PHONY: CTAGS GTAGS TAGS all all-am all-local am--refresh check \
|
||||||
|
check-am clean clean-cafexeclibLTLIBRARIES clean-cscope \
|
||||||
|
clean-generic clean-libtool clean-local \
|
||||||
|
- clean-toolexeclibLTLIBRARIES cscope cscopelist-am ctags \
|
||||||
|
- ctags-am distclean distclean-compile distclean-generic \
|
||||||
|
- distclean-hdr distclean-libtool distclean-local distclean-tags \
|
||||||
|
- dvi dvi-am html html-am info info-am install install-am \
|
||||||
|
- install-cafexeclibLTLIBRARIES install-data install-data-am \
|
||||||
|
- install-dvi install-dvi-am install-exec install-exec-am \
|
||||||
|
- install-exec-local install-gfor_cHEADERS install-html \
|
||||||
|
- install-html-am install-info install-info-am install-man \
|
||||||
|
+ clean-noinstLTLIBRARIES clean-toolexeclibLTLIBRARIES cscope \
|
||||||
|
+ cscopelist-am ctags ctags-am distclean distclean-compile \
|
||||||
|
+ distclean-generic distclean-hdr distclean-libtool \
|
||||||
|
+ distclean-local distclean-tags dvi dvi-am html html-am info \
|
||||||
|
+ info-am install install-am install-cafexeclibLTLIBRARIES \
|
||||||
|
+ install-data install-data-am install-dvi install-dvi-am \
|
||||||
|
+ install-exec install-exec-am install-exec-local \
|
||||||
|
+ install-gfor_cHEADERS install-html install-html-am \
|
||||||
|
+ install-info install-info-am install-man \
|
||||||
|
install-nodist_fincludeHEADERS install-pdf install-pdf-am \
|
||||||
|
install-ps install-ps-am install-strip install-toolexeclibDATA \
|
||||||
|
install-toolexeclibLTLIBRARIES installcheck installcheck-am \
|
||||||
|
@@ -7673,6 +7830,38 @@ ieee_arithmetic.mod: ieee_arithmetic.lo
|
||||||
|
@onestep_TRUE@libgfortran_c.lo: $(filter %.c,$(prereq_SRC))
|
||||||
|
@onestep_TRUE@ $(LTCOMPILE) -c -o $@ $^ -combine
|
||||||
|
|
||||||
|
+$(patsubst %.c,%.lo,$(nonshared_generated_C_SRC) $(nonshared)): \
|
||||||
|
+nonshared-%.lo: $(srcdir)/generated/%.c
|
||||||
|
+ $(LTCOMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
|
||||||
|
+
|
||||||
|
+$(patsubst %.c,%.o,$(nonshared_generated_C_SRC) $(nonshared)): \
|
||||||
|
+nonshared-%.o: $(srcdir)/generated/%.c
|
||||||
|
+ $(COMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
|
||||||
|
+
|
||||||
|
+$(patsubst %.c,%.lo,$(nonshared_intrinsics_C_SRC) $(nonshared)): \
|
||||||
|
+nonshared-%.lo: $(srcdir)/intrinsics/%.c
|
||||||
|
+ $(LTCOMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
|
||||||
|
+
|
||||||
|
+$(patsubst %.c,%.o,$(nonshared_intrinsics_C_SRC) $(nonshared)): \
|
||||||
|
+nonshared-%.o: $(srcdir)/intrinsics/%.c
|
||||||
|
+ $(COMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
|
||||||
|
+
|
||||||
|
+$(patsubst %.c,%.lo,$(nonshared_runtime_C_SRC) $(nonshared)): \
|
||||||
|
+nonshared-%.lo: $(srcdir)/runtime/%.c
|
||||||
|
+ $(LTCOMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
|
||||||
|
+
|
||||||
|
+$(patsubst %.c,%.o,$(nonshared_runtime_C_SRC) $(nonshared)): \
|
||||||
|
+nonshared-%.o: $(srcdir)/runtime/%.c
|
||||||
|
+ $(COMPILE) -c -o $@ $< -DLIBGFORTRAN_NONSHARED
|
||||||
|
+
|
||||||
|
+$(patsubst %.f90,%.lo,$(nonshared_intrinsics_f90_SRC) $(nonshared)): \
|
||||||
|
+nonshared-%.lo: $(srcdir)/intrinsics/%.f90
|
||||||
|
+ $(LTPPFCCOMPILE) -c -o $@ $< -fallow-leading-underscore
|
||||||
|
+
|
||||||
|
+$(patsubst %.f90,%.o,$(nonshared_intrinsics_f90_SRC) $(nonshared)): \
|
||||||
|
+nonshared-%.o: $(srcdir)/intrinsics/%.f90
|
||||||
|
+ $(PPFCCOMPILE) -c -o $@ $< -fallow-leading-underscore
|
||||||
|
+
|
||||||
|
kinds.h: $(srcdir)/mk-kinds-h.sh
|
||||||
|
$(SHELL) $(srcdir)/mk-kinds-h.sh '@LIBGOMP_CHECKED_INT_KINDS@' '@LIBGOMP_CHECKED_REAL_KINDS@' '$(FCCOMPILE)' > $@ || rm $@
|
||||||
|
|
||||||
|
--- libgfortran/libgfortran.h.jj 2022-04-28 15:56:10.221744660 +0200
|
||||||
|
+++ libgfortran/libgfortran.h 2022-05-13 13:22:46.652357155 +0200
|
||||||
|
@@ -216,7 +216,7 @@ extern int __mingw_snprintf (char *, siz
|
||||||
|
# define internal_proto(x) sym_rename(x, IPREFIX(x))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#if defined(HAVE_ATTRIBUTE_VISIBILITY) && defined(HAVE_ATTRIBUTE_ALIAS)
|
||||||
|
+#if defined(HAVE_ATTRIBUTE_VISIBILITY) && defined(HAVE_ATTRIBUTE_ALIAS) && !defined(LIBGFORTRAN_NONSHARED)
|
||||||
|
# define export_proto(x) sym_rename(x, PREFIX(x))
|
||||||
|
# define export_proto_np(x) extern char swallow_semicolon
|
||||||
|
# define iexport_proto(x) internal_proto(x)
|
||||||
|
@@ -291,6 +291,10 @@ typedef GFC_UINTEGER_4 gfc_char4_t;
|
||||||
|
simply equal to the kind parameter itself. */
|
||||||
|
#define GFC_SIZE_OF_CHAR_KIND(kind) (kind)
|
||||||
|
|
||||||
|
+#ifdef LIBGFORTRAN_NONSHARED
|
||||||
|
+#define big_endian (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#define GFOR_POINTER_TO_L1(p, kind) \
|
||||||
|
((__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ ? 1: 0) * (kind - 1) + (GFC_LOGICAL_1 *)(p))
|
||||||
|
|
||||||
|
@@ -2020,4 +2024,63 @@ extern int __snprintfieee128 (char *, si
|
||||||
|
#define HAVE_GFC_UINTEGER_1 1
|
||||||
|
#define HAVE_GFC_UINTEGER_4 1
|
||||||
|
|
||||||
|
+#ifdef LIBGFORTRAN_NONSHARED
|
||||||
|
+#include <stdlib.h>
|
||||||
|
+#include <string.h>
|
||||||
|
+#include <errno.h>
|
||||||
|
+
|
||||||
|
+#define internal_malloc_size nonshared_internal_malloc_size
|
||||||
|
+#define xmalloc nonshared_internal_xmalloc
|
||||||
|
+#define xmallocarray nonshared_internal_xmallocarray
|
||||||
|
+#define reshape_packed nonshared_reshape_packed
|
||||||
|
+static inline __attribute__((__always_inline__, __unused__))
|
||||||
|
+void *
|
||||||
|
+internal_malloc_size (size_t size)
|
||||||
|
+{
|
||||||
|
+ void *p;
|
||||||
|
+
|
||||||
|
+ if (size == 0)
|
||||||
|
+ return NULL;
|
||||||
|
+
|
||||||
|
+ p = (void *) malloc (size);
|
||||||
|
+ if (p == NULL)
|
||||||
|
+ os_error ("Memory allocation failed");
|
||||||
|
+ return p;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static inline __attribute__((__always_inline__, __unused__))
|
||||||
|
+void *
|
||||||
|
+xmalloc (size_t size)
|
||||||
|
+{
|
||||||
|
+ return internal_malloc_size (size ? size : 1);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static inline __attribute__((__always_inline__, __unused__))
|
||||||
|
+void *
|
||||||
|
+xmallocarray (size_t nmemb, size_t size)
|
||||||
|
+{
|
||||||
|
+ if (!nmemb || !size)
|
||||||
|
+ size = nmemb = 1;
|
||||||
|
+ else if (__builtin_expect ((nmemb | size)
|
||||||
|
+ >= (((size_t) 1) << (__CHAR_BIT__
|
||||||
|
+ * sizeof (size_t) / 2)), 0)
|
||||||
|
+ && nmemb > __SIZE_MAX__ / size)
|
||||||
|
+ {
|
||||||
|
+ errno = ENOMEM;
|
||||||
|
+ os_error ("Integer overflow in xmallocarray");
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return internal_malloc_size (nmemb * size);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static inline __attribute__((__always_inline__, __unused__))
|
||||||
|
+#include "intrinsics/reshape_packed.c"
|
||||||
|
+
|
||||||
|
+struct no_bounds_check { int bounds_check; };
|
||||||
|
+#define compile_options ((struct no_bounds_check) { .bounds_check = 0 })
|
||||||
|
+
|
||||||
|
+#define internal_error(x, y...) runtime_error (y)
|
||||||
|
+
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#endif /* LIBGFOR_H */
|
||||||
|
--- libgfortran/runtime/nonshared-error.c.jj 2022-05-13 13:22:46.653357141 +0200
|
||||||
|
+++ libgfortran/runtime/nonshared-error.c 2022-05-13 13:22:46.653357141 +0200
|
||||||
|
@@ -0,0 +1,56 @@
|
||||||
|
+/* Copyright (C) 2020-2022 Free Software Foundation, Inc.
|
||||||
|
+
|
||||||
|
+This file is part of the GNU Fortran runtime library (libgfortran).
|
||||||
|
+
|
||||||
|
+Libgfortran is free software; you can redistribute it and/or modify
|
||||||
|
+it under the terms of the GNU General Public License as published by
|
||||||
|
+the Free Software Foundation; either version 3, or (at your option)
|
||||||
|
+any later version.
|
||||||
|
+
|
||||||
|
+Libgfortran is distributed in the hope that it will be useful,
|
||||||
|
+but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
+GNU General Public License for more details.
|
||||||
|
+
|
||||||
|
+Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
+permissions described in the GCC Runtime Library Exception, version
|
||||||
|
+3.1, as published by the Free Software Foundation.
|
||||||
|
+
|
||||||
|
+You should have received a copy of the GNU General Public License and
|
||||||
|
+a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
+<http://www.gnu.org/licenses/>. */
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+#define LIBGFORTRAN_NONSHARED
|
||||||
|
+#include "libgfortran.h"
|
||||||
|
+#include "io.h"
|
||||||
|
+#include "async.h"
|
||||||
|
+
|
||||||
|
+#include <string.h>
|
||||||
|
+#include <stdio.h>
|
||||||
|
+
|
||||||
|
+/* Improved version of os_error with a printf style format string and
|
||||||
|
+ a locus. */
|
||||||
|
+
|
||||||
|
+void
|
||||||
|
+os_error_at (const char *where, const char *message, ...)
|
||||||
|
+{
|
||||||
|
+ char buf[4096];
|
||||||
|
+ size_t len = strlen (where);
|
||||||
|
+ int written;
|
||||||
|
+ va_list ap;
|
||||||
|
+
|
||||||
|
+ if (len >= 2048)
|
||||||
|
+ os_error ("Unknown error");
|
||||||
|
+ memcpy (buf, where, len);
|
||||||
|
+ memcpy (buf + len, ": ", 2);
|
||||||
|
+ va_start (ap, message);
|
||||||
|
+ written = vsnprintf (buf + len + 2, 4095 - len - 2, message, ap);
|
||||||
|
+ va_end (ap);
|
||||||
|
+ if (written < 0)
|
||||||
|
+ written = 0;
|
||||||
|
+ buf[len + 2 + written] = '\0';
|
||||||
|
+ os_error (buf);
|
||||||
|
+}
|
||||||
|
+iexport(os_error_at);
|
||||||
|
--- libgfortran/io/nonshared-transfer.c.jj 2022-05-13 13:22:46.653357141 +0200
|
||||||
|
+++ libgfortran/io/nonshared-transfer.c 2022-05-13 13:22:46.653357141 +0200
|
||||||
|
@@ -0,0 +1,42 @@
|
||||||
|
+/* Copyright (C) 2002-2022 Free Software Foundation, Inc.
|
||||||
|
+ Contributed by Andy Vaught
|
||||||
|
+ Namelist transfer functions contributed by Paul Thomas
|
||||||
|
+ F2003 I/O support contributed by Jerry DeLisle
|
||||||
|
+
|
||||||
|
+This file is part of the GNU Fortran runtime library (libgfortran).
|
||||||
|
+
|
||||||
|
+Libgfortran is free software; you can redistribute it and/or modify
|
||||||
|
+it under the terms of the GNU General Public License as published by
|
||||||
|
+the Free Software Foundation; either version 3, or (at your option)
|
||||||
|
+any later version.
|
||||||
|
+
|
||||||
|
+Libgfortran is distributed in the hope that it will be useful,
|
||||||
|
+but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
+GNU General Public License for more details.
|
||||||
|
+
|
||||||
|
+Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
+permissions described in the GCC Runtime Library Exception, version
|
||||||
|
+3.1, as published by the Free Software Foundation.
|
||||||
|
+
|
||||||
|
+You should have received a copy of the GNU General Public License and
|
||||||
|
+a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
+<http://www.gnu.org/licenses/>. */
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+/* transfer.c -- Top level handling of data transfer statements. */
|
||||||
|
+
|
||||||
|
+#include "io.h"
|
||||||
|
+#include "fbuf.h"
|
||||||
|
+#include "format.h"
|
||||||
|
+#include "unix.h"
|
||||||
|
+#include "async.h"
|
||||||
|
+#include <string.h>
|
||||||
|
+#include <errno.h>
|
||||||
|
+
|
||||||
|
+void
|
||||||
|
+st_wait_async (st_parameter_wait *wtp)
|
||||||
|
+{
|
||||||
|
+ (void) wtp;
|
||||||
|
+}
|
17
SOURCES/gcc12-libgomp-omp_h-multilib.patch
Normal file
17
SOURCES/gcc12-libgomp-omp_h-multilib.patch
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
2008-06-09 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs.
|
||||||
|
|
||||||
|
--- libgomp/omp.h.in.jj 2008-06-09 13:34:05.000000000 +0200
|
||||||
|
+++ libgomp/omp.h.in 2008-06-09 13:34:48.000000000 +0200
|
||||||
|
@@ -42,8 +42,8 @@ typedef struct
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
- unsigned char _x[@OMP_NEST_LOCK_SIZE@]
|
||||||
|
- __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@)));
|
||||||
|
+ unsigned char _x[8 + sizeof (void *)]
|
||||||
|
+ __attribute__((__aligned__(sizeof (void *))));
|
||||||
|
} omp_nest_lock_t;
|
||||||
|
#endif
|
||||||
|
|
14181
SOURCES/gcc12-libstdc++-compat.patch
Normal file
14181
SOURCES/gcc12-libstdc++-compat.patch
Normal file
File diff suppressed because it is too large
Load Diff
24
SOURCES/gcc12-libstdc++-docs.patch
Normal file
24
SOURCES/gcc12-libstdc++-docs.patch
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
--- libstdc++-v3/doc/html/index.html.jj 2011-01-03 12:53:21.282829010 +0100
|
||||||
|
+++ libstdc++-v3/doc/html/index.html 2011-01-04 18:06:28.999851145 +0100
|
||||||
|
@@ -5,6 +5,8 @@
|
||||||
|
<a class="link" href="https://www.fsf.org" target="_top">FSF
|
||||||
|
</a>
|
||||||
|
</p><p>
|
||||||
|
+ Release 12.1.1
|
||||||
|
+ </p><p>
|
||||||
|
Permission is granted to copy, distribute and/or modify this
|
||||||
|
document under the terms of the GNU Free Documentation
|
||||||
|
License, Version 1.2 or any later version published by the
|
||||||
|
--- libstdc++-v3/doc/html/api.html.jj 2011-01-03 12:53:21.000000000 +0100
|
||||||
|
+++ libstdc++-v3/doc/html/api.html 2011-01-04 18:12:01.672757784 +0100
|
||||||
|
@@ -20,7 +20,9 @@
|
||||||
|
member functions for the library classes, finding out what is in a
|
||||||
|
particular include file, looking at inheritance diagrams, etc.
|
||||||
|
</p><p>
|
||||||
|
- The API documentation, rendered into HTML, can be viewed online
|
||||||
|
+ The API documentation, rendered into HTML, can be viewed locally
|
||||||
|
+ <a class="link" href="api/index.html" target="_top">for the 12.1.1 release</a>,
|
||||||
|
+ online
|
||||||
|
<a class="link" href="http://gcc.gnu.org/onlinedocs/" target="_top">for each GCC release</a>
|
||||||
|
and
|
||||||
|
<a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html" target="_top">
|
27
SOURCES/gcc12-libtool-no-rpath.patch
Normal file
27
SOURCES/gcc12-libtool-no-rpath.patch
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
libtool sucks.
|
||||||
|
--- ltmain.sh.jj 2007-12-07 14:53:21.000000000 +0100
|
||||||
|
+++ ltmain.sh 2008-09-05 21:51:48.000000000 +0200
|
||||||
|
@@ -5394,6 +5394,7 @@ EOF
|
||||||
|
rpath="$finalize_rpath"
|
||||||
|
test "$mode" != relink && rpath="$compile_rpath$rpath"
|
||||||
|
for libdir in $rpath; do
|
||||||
|
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
|
||||||
|
if test -n "$hardcode_libdir_flag_spec"; then
|
||||||
|
if test -n "$hardcode_libdir_separator"; then
|
||||||
|
if test -z "$hardcode_libdirs"; then
|
||||||
|
@@ -6071,6 +6072,7 @@ EOF
|
||||||
|
rpath=
|
||||||
|
hardcode_libdirs=
|
||||||
|
for libdir in $compile_rpath $finalize_rpath; do
|
||||||
|
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
|
||||||
|
if test -n "$hardcode_libdir_flag_spec"; then
|
||||||
|
if test -n "$hardcode_libdir_separator"; then
|
||||||
|
if test -z "$hardcode_libdirs"; then
|
||||||
|
@@ -6120,6 +6122,7 @@ EOF
|
||||||
|
rpath=
|
||||||
|
hardcode_libdirs=
|
||||||
|
for libdir in $finalize_rpath; do
|
||||||
|
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
|
||||||
|
if test -n "$hardcode_libdir_flag_spec"; then
|
||||||
|
if test -n "$hardcode_libdir_separator"; then
|
||||||
|
if test -z "$hardcode_libdirs"; then
|
17
SOURCES/gcc12-libtsan-s390x.patch
Normal file
17
SOURCES/gcc12-libtsan-s390x.patch
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
commit r12-8527-g7811663964aa7e31c3939b859bbfa2e16919639f
|
||||||
|
Author: Martin Liska <mliska@suse.cz>
|
||||||
|
Date: Wed Jun 29 15:28:07 2022 +0200
|
||||||
|
|
||||||
|
libsanitizer: cherry-pick 791e0d1bc85d
|
||||||
|
|
||||||
|
791e0d1bc85d: [compiler-rt] Add NO_EXEC_STACK_DIRECTIVE on s390x
|
||||||
|
(cherry picked from commit aa87b7541b4c11f59c521154513f844ea6b5c977)
|
||||||
|
|
||||||
|
--- libsanitizer/tsan/tsan_rtl_s390x.S
|
||||||
|
+++ libsanitizer/tsan/tsan_rtl_s390x.S
|
||||||
|
@@ -45,3 +45,5 @@ intercept setjmp, _ZN14__interception11real_setjmpE
|
||||||
|
intercept _setjmp, _ZN14__interception12real__setjmpE
|
||||||
|
intercept sigsetjmp, _ZN14__interception14real_sigsetjmpE
|
||||||
|
intercept __sigsetjmp, _ZN14__interception16real___sigsetjmpE
|
||||||
|
+
|
||||||
|
+NO_EXEC_STACK_DIRECTIVE
|
37
SOURCES/gcc12-no-add-needed.patch
Normal file
37
SOURCES/gcc12-no-add-needed.patch
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
2010-02-08 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
|
* config/gnu-user.h (LINK_EH_SPEC): Pass --no-add-needed to the linker.
|
||||||
|
* config/alpha/elf.h (LINK_EH_SPEC): Likewise.
|
||||||
|
* config/ia64/linux.h (LINK_EH_SPEC): Likewise.
|
||||||
|
|
||||||
|
--- gcc/config/alpha/elf.h.jj 2011-01-03 12:52:31.118056764 +0100
|
||||||
|
+++ gcc/config/alpha/elf.h 2011-01-04 18:14:10.931874160 +0100
|
||||||
|
@@ -168,5 +168,5 @@ extern int alpha_this_gpdisp_sequence_nu
|
||||||
|
I imagine that other systems will catch up. In the meantime, it
|
||||||
|
doesn't harm to make sure that the data exists to be used later. */
|
||||||
|
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||||
|
-#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
|
||||||
|
+#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} "
|
||||||
|
#endif
|
||||||
|
--- gcc/config/ia64/linux.h.jj 2011-01-03 13:02:11.462994522 +0100
|
||||||
|
+++ gcc/config/ia64/linux.h 2011-01-04 18:14:10.931874160 +0100
|
||||||
|
@@ -76,7 +76,7 @@ do { \
|
||||||
|
Signalize that because we have fde-glibc, we don't need all C shared libs
|
||||||
|
linked against -lgcc_s. */
|
||||||
|
#undef LINK_EH_SPEC
|
||||||
|
-#define LINK_EH_SPEC ""
|
||||||
|
+#define LINK_EH_SPEC "--no-add-needed "
|
||||||
|
|
||||||
|
#undef TARGET_INIT_LIBFUNCS
|
||||||
|
#define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs
|
||||||
|
--- gcc/config/gnu-user.h.jj 2011-01-03 12:53:03.739057299 +0100
|
||||||
|
+++ gcc/config/gnu-user.h 2011-01-04 18:14:10.932814884 +0100
|
||||||
|
@@ -106,7 +106,7 @@ see the files COPYING3 and COPYING.RUNTI
|
||||||
|
#define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
|
||||||
|
|
||||||
|
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||||
|
-#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
|
||||||
|
+#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} "
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define GNU_USER_TARGET_LINK_GCC_C_SEQUENCE_SPEC \
|
28
SOURCES/gcc12-pr105551.patch
Normal file
28
SOURCES/gcc12-pr105551.patch
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
2022-05-11 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR bootstrap/105551
|
||||||
|
* opts.cc (finish_options): Also disable var-tracking if
|
||||||
|
!DWARF2_DEBUGGING_INFO.
|
||||||
|
|
||||||
|
--- gcc/opts.cc
|
||||||
|
+++ gcc/opts.cc
|
||||||
|
@@ -1334,11 +1334,15 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set,
|
||||||
|
|| opts->x_flag_selective_scheduling2));
|
||||||
|
|
||||||
|
/* We know which debug output will be used so we can set flag_var_tracking
|
||||||
|
- and flag_var_tracking_uninit if the user has not specified them. Note
|
||||||
|
- we have not yet initialized debug_hooks so we might uselessly run
|
||||||
|
- var-tracking on targets without var_location debug hook support. */
|
||||||
|
+ and flag_var_tracking_uninit if the user has not specified them. */
|
||||||
|
if (opts->x_debug_info_level < DINFO_LEVEL_NORMAL
|
||||||
|
- || !dwarf_debuginfo_p (opts))
|
||||||
|
+ || !dwarf_debuginfo_p (opts)
|
||||||
|
+ /* We have not yet initialized debug hooks so match that to check
|
||||||
|
+ whether we're only doing DWARF2_LINENO_DEBUGGING_INFO. */
|
||||||
|
+#ifndef DWARF2_DEBUGGING_INFO
|
||||||
|
+ || true
|
||||||
|
+#endif
|
||||||
|
+ )
|
||||||
|
{
|
||||||
|
if ((opts_set->x_flag_var_tracking && opts->x_flag_var_tracking == 1)
|
||||||
|
|| (opts_set->x_flag_var_tracking_uninit
|
89
SOURCES/gcc12-pr105991.patch
Normal file
89
SOURCES/gcc12-pr105991.patch
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
commit 6c175b3d170de2bb02b7bd45b3348eec05d28451
|
||||||
|
Author: Roger Sayle <roger@nextmovesoftware.com>
|
||||||
|
Date: Mon Jul 4 13:58:37 2022 +0100
|
||||||
|
|
||||||
|
PR target/105991: Recognize PLUS and XOR forms of rldimi in rs6000.md.
|
||||||
|
|
||||||
|
This patch addresses PR target/105991 where a change to prefer representing
|
||||||
|
shifts and adds at the tree-level as multiplications, causes problems for
|
||||||
|
the rldimi patterns in the powerpc backend. The issue is that rs6000.md
|
||||||
|
models this pattern using IOR, and some variants that have the equivalent
|
||||||
|
PLUS or XOR in the RTL fail to match some *rotl<mode>4_insert patterns.
|
||||||
|
This is fixed in this patch by adding a define_insn_and_split to locally
|
||||||
|
canonicalize the PLUS and XOR forms to the backend's preferred IOR form.
|
||||||
|
|
||||||
|
Backported from master.
|
||||||
|
|
||||||
|
2022-07-04 Roger Sayle <roger@nextmovesoftware.com>
|
||||||
|
Marek Polacek <polacek@redhat.com>
|
||||||
|
Segher Boessenkool <segher@kernel.crashing.org>
|
||||||
|
Kewen Lin <linkw@linux.ibm.com>
|
||||||
|
|
||||||
|
gcc/ChangeLog
|
||||||
|
PR target/105991
|
||||||
|
* config/rs6000/rs6000.md (rotl<mode>3_insert_3): Check that
|
||||||
|
exact_log2 doesn't return -1 (or zero).
|
||||||
|
(plus_xor): New code iterator.
|
||||||
|
(*rotl<mode>3_insert_3_<code>): New define_insn_and_split.
|
||||||
|
|
||||||
|
gcc/testsuite/ChangeLog
|
||||||
|
PR target/105991
|
||||||
|
* gcc.target/powerpc/pr105991.c: New test case.
|
||||||
|
|
||||||
|
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
|
||||||
|
index 64049a6e521..6082ded8c31 100644
|
||||||
|
--- a/gcc/config/rs6000/rs6000.md
|
||||||
|
+++ b/gcc/config/rs6000/rs6000.md
|
||||||
|
@@ -4178,7 +4178,8 @@ (define_insn "rotl<mode>3_insert_3"
|
||||||
|
(match_operand:GPR 4 "const_int_operand" "n"))
|
||||||
|
(ashift:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")
|
||||||
|
(match_operand:SI 2 "const_int_operand" "n"))))]
|
||||||
|
- "INTVAL (operands[2]) == exact_log2 (UINTVAL (operands[4]) + 1)"
|
||||||
|
+ "INTVAL (operands[2]) > 0
|
||||||
|
+ && INTVAL (operands[2]) == exact_log2 (UINTVAL (operands[4]) + 1)"
|
||||||
|
{
|
||||||
|
if (<MODE>mode == SImode)
|
||||||
|
return "rlwimi %0,%1,%h2,0,31-%h2";
|
||||||
|
@@ -4187,6 +4188,24 @@ (define_insn "rotl<mode>3_insert_3"
|
||||||
|
}
|
||||||
|
[(set_attr "type" "insert")])
|
||||||
|
|
||||||
|
+; Canonicalize the PLUS and XOR forms to IOR for rotl<mode>3_insert_3
|
||||||
|
+(define_code_iterator plus_xor [plus xor])
|
||||||
|
+
|
||||||
|
+(define_insn_and_split "*rotl<mode>3_insert_3_<code>"
|
||||||
|
+ [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
|
||||||
|
+ (plus_xor:GPR
|
||||||
|
+ (and:GPR (match_operand:GPR 3 "gpc_reg_operand" "0")
|
||||||
|
+ (match_operand:GPR 4 "const_int_operand" "n"))
|
||||||
|
+ (ashift:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")
|
||||||
|
+ (match_operand:SI 2 "const_int_operand" "n"))))]
|
||||||
|
+ "INTVAL (operands[2]) > 0
|
||||||
|
+ && INTVAL (operands[2]) == exact_log2 (UINTVAL (operands[4]) + 1)"
|
||||||
|
+ "#"
|
||||||
|
+ "&& 1"
|
||||||
|
+ [(set (match_dup 0)
|
||||||
|
+ (ior:GPR (and:GPR (match_dup 3) (match_dup 4))
|
||||||
|
+ (ashift:GPR (match_dup 1) (match_dup 2))))])
|
||||||
|
+
|
||||||
|
(define_code_iterator plus_ior_xor [plus ior xor])
|
||||||
|
|
||||||
|
(define_split
|
||||||
|
diff --git a/gcc/testsuite/gcc.target/powerpc/pr105991.c b/gcc/testsuite/gcc.target/powerpc/pr105991.c
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..0d9d130cb63
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/testsuite/gcc.target/powerpc/pr105991.c
|
||||||
|
@@ -0,0 +1,12 @@
|
||||||
|
+/* { dg-do compile } */
|
||||||
|
+/* { dg-options "-O2" } */
|
||||||
|
+/* { dg-require-effective-target lp64 } */
|
||||||
|
+unsigned long long
|
||||||
|
+foo (unsigned long long value)
|
||||||
|
+{
|
||||||
|
+ value &= 0xffffffff;
|
||||||
|
+ value |= value << 32;
|
||||||
|
+ return value;
|
||||||
|
+}
|
||||||
|
+/* { dg-final { scan-assembler {\mrldimi\M} } } */
|
||||||
|
+
|
30
SOURCES/gcc12-rh1574936.patch
Normal file
30
SOURCES/gcc12-rh1574936.patch
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
crt files and statically linked libgcc objects cause false positives
|
||||||
|
in annobin coverage, so we add the assembler flag to generate notes
|
||||||
|
for them.
|
||||||
|
|
||||||
|
The patch also adds notes to libgcc_s.so, but this is harmless because
|
||||||
|
these notes only confer that there is no other annobin markup.
|
||||||
|
|
||||||
|
2018-07-25 Florian Weimer <fweimer@redhat.com>
|
||||||
|
|
||||||
|
* Makefile.in (LIBGCC2_CFLAGS, CRTSTUFF_CFLAGS): Add
|
||||||
|
-Wa,--generate-missing-build-notes=yes.
|
||||||
|
|
||||||
|
--- libgcc/Makefile.in 2018-01-13 13:05:41.000000000 +0100
|
||||||
|
+++ libgcc/Makefile.in 2018-07-25 13:15:02.036226940 +0200
|
||||||
|
@@ -246,6 +246,7 @@ LIBGCC2_DEBUG_CFLAGS = -g
|
||||||
|
LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \
|
||||||
|
$(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \
|
||||||
|
-fbuilding-libgcc -fno-stack-protector \
|
||||||
|
+ -Wa,--generate-missing-build-notes=yes \
|
||||||
|
$(INHIBIT_LIBC_CFLAGS)
|
||||||
|
|
||||||
|
# Additional options to use when compiling libgcc2.a.
|
||||||
|
@@ -301,6 +302,7 @@ CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(IN
|
||||||
|
$(NO_PIE_CFLAGS) -finhibit-size-directive -fno-inline -fno-exceptions \
|
||||||
|
-fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \
|
||||||
|
-fbuilding-libgcc -fno-stack-protector $(FORCE_EXPLICIT_EH_REGISTRY) \
|
||||||
|
+ -Wa,--generate-missing-build-notes=yes \
|
||||||
|
$(INHIBIT_LIBC_CFLAGS) $(USE_TM_CLONE_REGISTRY)
|
||||||
|
|
||||||
|
# Extra flags to use when compiling crt{begin,end}.o.
|
40
SOURCES/gcc12-sparc-config-detection.patch
Normal file
40
SOURCES/gcc12-sparc-config-detection.patch
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
--- gcc/config.gcc.jj 2008-04-24 15:42:46.000000000 -0500
|
||||||
|
+++ gcc/config.gcc 2008-04-24 15:44:51.000000000 -0500
|
||||||
|
@@ -2790,7 +2790,7 @@ sparc-*-rtems*)
|
||||||
|
tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
|
||||||
|
tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
|
||||||
|
;;
|
||||||
|
-sparc-*-linux*)
|
||||||
|
+sparc-*-linux* | sparcv9-*-linux*)
|
||||||
|
tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
|
||||||
|
extra_options="${extra_options} sparc/long-double-switch.opt"
|
||||||
|
case ${target} in
|
||||||
|
@@ -2844,7 +2844,7 @@ sparc64-*-rtems*)
|
||||||
|
extra_options="${extra_options}"
|
||||||
|
tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
|
||||||
|
;;
|
||||||
|
-sparc64-*-linux*)
|
||||||
|
+sparc64*-*-linux*)
|
||||||
|
tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default64.h sparc/linux64.h sparc/tso.h"
|
||||||
|
extra_options="${extra_options} sparc/long-double-switch.opt"
|
||||||
|
tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
|
||||||
|
--- libgcc/config.host.jj 2008-04-24 15:46:19.000000000 -0500
|
||||||
|
+++ libgcc/config.host 2008-04-24 15:46:49.000000000 -0500
|
||||||
|
@@ -1002,7 +1002,7 @@ sparc-*-elf*)
|
||||||
|
tmake_file="${tmake_file} t-fdpbit t-crtfm"
|
||||||
|
extra_parts="$extra_parts crti.o crtn.o crtfastmath.o"
|
||||||
|
;;
|
||||||
|
-sparc-*-linux*) # SPARC's running GNU/Linux, libc6
|
||||||
|
+sparc-*-linux* | sparcv9-*-linux*) # SPARC's running GNU/Linux, libc6
|
||||||
|
tmake_file="${tmake_file} t-crtfm"
|
||||||
|
if test "${host_address}" = 64; then
|
||||||
|
tmake_file="$tmake_file sparc/t-linux64"
|
||||||
|
@@ -1050,7 +1050,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
|
||||||
|
tmake_file="$tmake_file t-crtfm"
|
||||||
|
extra_parts="$extra_parts crtfastmath.o"
|
||||||
|
;;
|
||||||
|
-sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux
|
||||||
|
+sparc64*-*-linux*) # 64-bit SPARC's running GNU/Linux
|
||||||
|
extra_parts="$extra_parts crtfastmath.o"
|
||||||
|
tmake_file="${tmake_file} t-crtfm sparc/t-linux"
|
||||||
|
if test "${host_address}" = 64; then
|
188
SOURCES/libgomp_nonshared.c
Normal file
188
SOURCES/libgomp_nonshared.c
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
/* Copyright (C) 2019 Free Software Foundation, Inc.
|
||||||
|
Contributed by Jakub Jelinek <jakub@redhat.com>.
|
||||||
|
|
||||||
|
This file is part of the GNU Offloading and Multi Processing Library
|
||||||
|
(libgomp).
|
||||||
|
|
||||||
|
Libgomp is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 3, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
|
more details.
|
||||||
|
|
||||||
|
Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
permissions described in the GCC Runtime Library Exception, version
|
||||||
|
3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License and
|
||||||
|
a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
/* Remapping of nonmonotonic runtime schedule and maybe nonmonotonic runtime
|
||||||
|
schedule loop entrypoints (the used by GCC 9 and later for runtime
|
||||||
|
schedule without monotonic or nonmonotonic modifiers).
|
||||||
|
RHEL 7 libgomp only implements the GOMP*loop*runtime* entrypoints without
|
||||||
|
nonmonotonic in the names, which always implement monotonic scheduling,
|
||||||
|
but the library doesn't implement any other scheduling, even in GCC 9
|
||||||
|
and monotonic scheduling is a valid implementation of non-monotonic
|
||||||
|
scheduling. */
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
typedef unsigned long long ull;
|
||||||
|
extern bool GOMP_loop_runtime_start (long, long, long, long *, long *);
|
||||||
|
extern bool GOMP_loop_runtime_next (long *, long *);
|
||||||
|
extern void GOMP_parallel_loop_runtime (void (*)(void *), void *,
|
||||||
|
unsigned, long, long, long,
|
||||||
|
unsigned);
|
||||||
|
extern bool GOMP_loop_ull_runtime_start (bool, ull, ull, ull, ull *, ull *);
|
||||||
|
extern bool GOMP_loop_ull_runtime_next (ull *, ull *);
|
||||||
|
extern bool GOMP_loop_dynamic_next (long *, long *);
|
||||||
|
extern bool GOMP_loop_dynamic_start (long, long, long, long, long *, long *);
|
||||||
|
extern bool GOMP_loop_guided_next (long *, long *);
|
||||||
|
extern bool GOMP_loop_guided_start (long, long, long, long, long *, long *);
|
||||||
|
extern bool GOMP_loop_ull_dynamic_next (ull *, ull *);
|
||||||
|
extern bool GOMP_loop_ull_dynamic_start (bool, ull, ull, ull, ull, ull *,
|
||||||
|
ull *);
|
||||||
|
extern bool GOMP_loop_ull_guided_next (ull *, ull *);
|
||||||
|
extern bool GOMP_loop_ull_guided_start (bool, ull, ull, ull, ull, ull *,
|
||||||
|
ull *);
|
||||||
|
extern void GOMP_parallel_loop_dynamic (void (*)(void *), void *,
|
||||||
|
unsigned, long, long, long, long,
|
||||||
|
unsigned);
|
||||||
|
extern void GOMP_parallel_loop_guided (void (*)(void *), void *,
|
||||||
|
unsigned, long, long, long, long,
|
||||||
|
unsigned);
|
||||||
|
#define alias(x, y) __typeof (x) y __attribute__((alias (#x)))
|
||||||
|
|
||||||
|
#pragma GCC visibility push(hidden)
|
||||||
|
|
||||||
|
bool
|
||||||
|
GOMP_loop_nonmonotonic_runtime_start (long start, long end, long incr,
|
||||||
|
long *istart, long *iend)
|
||||||
|
{
|
||||||
|
return GOMP_loop_runtime_start (start, end, incr, istart, iend);
|
||||||
|
}
|
||||||
|
alias (GOMP_loop_nonmonotonic_runtime_start,
|
||||||
|
GOMP_loop_maybe_nonmonotonic_runtime_start);
|
||||||
|
|
||||||
|
bool
|
||||||
|
GOMP_loop_nonmonotonic_runtime_next (long *istart, long *iend)
|
||||||
|
{
|
||||||
|
return GOMP_loop_runtime_next (istart, iend);
|
||||||
|
}
|
||||||
|
alias (GOMP_loop_nonmonotonic_runtime_next,
|
||||||
|
GOMP_loop_maybe_nonmonotonic_runtime_next);
|
||||||
|
|
||||||
|
void
|
||||||
|
GOMP_parallel_loop_nonmonotonic_runtime (void (*fn)(void *), void *data,
|
||||||
|
unsigned num_threads, long start,
|
||||||
|
long end, long incr, unsigned flags)
|
||||||
|
{
|
||||||
|
return GOMP_parallel_loop_runtime (fn, data, num_threads, start,
|
||||||
|
end, incr, flags);
|
||||||
|
}
|
||||||
|
alias (GOMP_parallel_loop_nonmonotonic_runtime,
|
||||||
|
GOMP_parallel_loop_maybe_nonmonotonic_runtime);
|
||||||
|
|
||||||
|
bool
|
||||||
|
GOMP_loop_ull_nonmonotonic_runtime_start (bool up, ull start, ull end,
|
||||||
|
ull incr, ull *istart, ull *iend)
|
||||||
|
{
|
||||||
|
return GOMP_loop_ull_runtime_start (up, start, end, incr, istart, iend);
|
||||||
|
}
|
||||||
|
alias (GOMP_loop_ull_nonmonotonic_runtime_start,
|
||||||
|
GOMP_loop_ull_maybe_nonmonotonic_runtime_start);
|
||||||
|
|
||||||
|
bool
|
||||||
|
GOMP_loop_ull_nonmonotonic_runtime_next (ull *istart, ull *iend)
|
||||||
|
{
|
||||||
|
return GOMP_loop_ull_runtime_next (istart, iend);
|
||||||
|
}
|
||||||
|
alias (GOMP_loop_ull_nonmonotonic_runtime_next,
|
||||||
|
GOMP_loop_ull_maybe_nonmonotonic_runtime_next);
|
||||||
|
|
||||||
|
bool
|
||||||
|
GOMP_loop_nonmonotonic_dynamic_next (long *istart, long *iend)
|
||||||
|
{
|
||||||
|
return GOMP_loop_dynamic_next (istart, iend);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
GOMP_loop_nonmonotonic_dynamic_start (long start, long end, long incr,
|
||||||
|
long chunk_size, long *istart,
|
||||||
|
long *iend)
|
||||||
|
{
|
||||||
|
return GOMP_loop_dynamic_start (start, end, incr, chunk_size, istart, iend);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
GOMP_loop_nonmonotonic_guided_next (long *istart, long *iend)
|
||||||
|
{
|
||||||
|
return GOMP_loop_guided_next (istart, iend);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
GOMP_loop_nonmonotonic_guided_start (long start, long end, long incr,
|
||||||
|
long chunk_size, long *istart, long *iend)
|
||||||
|
{
|
||||||
|
return GOMP_loop_guided_start (start, end, incr, chunk_size, istart, iend);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
GOMP_loop_ull_nonmonotonic_dynamic_next (ull *istart, ull *iend)
|
||||||
|
{
|
||||||
|
return GOMP_loop_ull_dynamic_next (istart, iend);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
GOMP_loop_ull_nonmonotonic_dynamic_start (bool up, ull start,
|
||||||
|
ull end, ull incr,
|
||||||
|
ull chunk_size,
|
||||||
|
ull *istart, ull *iend)
|
||||||
|
{
|
||||||
|
return GOMP_loop_ull_dynamic_start (up, start, end, incr, chunk_size, istart,
|
||||||
|
iend);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
GOMP_loop_ull_nonmonotonic_guided_next (ull *istart, ull *iend)
|
||||||
|
{
|
||||||
|
return GOMP_loop_ull_guided_next (istart, iend);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
GOMP_loop_ull_nonmonotonic_guided_start (bool up, ull start, ull end,
|
||||||
|
ull incr, ull chunk_size,
|
||||||
|
ull *istart, ull *iend)
|
||||||
|
{
|
||||||
|
return GOMP_loop_ull_guided_start (up, start, end, incr, chunk_size, istart,
|
||||||
|
iend);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
GOMP_parallel_loop_nonmonotonic_dynamic (void (*fn) (void *), void *data,
|
||||||
|
unsigned num_threads, long start,
|
||||||
|
long end, long incr, long chunk_size,
|
||||||
|
unsigned flags)
|
||||||
|
{
|
||||||
|
GOMP_parallel_loop_dynamic (fn, data, num_threads, start, end, incr,
|
||||||
|
chunk_size, flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
GOMP_parallel_loop_nonmonotonic_guided (void (*fn) (void *), void *data,
|
||||||
|
unsigned num_threads, long start,
|
||||||
|
long end, long incr, long chunk_size,
|
||||||
|
unsigned flags)
|
||||||
|
{
|
||||||
|
GOMP_parallel_loop_guided (fn, data, num_threads, start, end, incr,
|
||||||
|
chunk_size, flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma GCC visibility pop
|
3200
SPECS/gcc.spec
Normal file
3200
SPECS/gcc.spec
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user