Merge remote-tracking branch 'up/main' into main-riscv64
Signed-off-by: David Abdurachmanov <davidlt@rivosinc.com>
This commit is contained in:
commit
910e36f48c
9
.gitignore
vendored
9
.gitignore
vendored
@ -105,3 +105,12 @@
|
|||||||
/gcc-13.0.1-20230421.tar.xz
|
/gcc-13.0.1-20230421.tar.xz
|
||||||
/gcc-13.1.1-20230426.tar.xz
|
/gcc-13.1.1-20230426.tar.xz
|
||||||
/gcc-13.1.1-20230511.tar.xz
|
/gcc-13.1.1-20230511.tar.xz
|
||||||
|
/gcc-13.1.1-20230519.tar.xz
|
||||||
|
/gcc-13.1.1-20230614.tar.xz
|
||||||
|
/gcc-13.2.1-20230728.tar.xz
|
||||||
|
/gcc-13.2.1-20230906.tar.xz
|
||||||
|
/nvptx-tools-aa3404ad5a496cda5d79a50bedb1344fd63e8763.tar.xz
|
||||||
|
/gcc-13.2.1-20230918.tar.xz
|
||||||
|
/gcc-13.2.1-20231011.tar.xz
|
||||||
|
/gcc-13.2.1-20231113.tar.xz
|
||||||
|
/gcc-13.2.1-20231205.tar.xz
|
||||||
|
@ -1,41 +0,0 @@
|
|||||||
From 203f3060dd363361b172f7295f42bb6bf5ac0b3b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Andreas Schwab <schwab@suse.de>
|
|
||||||
Date: Sat, 23 Apr 2022 15:48:42 +0200
|
|
||||||
Subject: [PATCH] riscv/linux: Don't add -latomic with -pthread
|
|
||||||
|
|
||||||
Now that we have support for inline subword atomic operations, it is no
|
|
||||||
longer necessary to link against libatomic. This also fixes testsuite
|
|
||||||
failures because the framework does not properly set up the linker flags
|
|
||||||
for finding libatomic.
|
|
||||||
The use of atomic operations is also independent of the use of libpthread.
|
|
||||||
|
|
||||||
gcc/
|
|
||||||
* config/riscv/linux.h (LIB_SPEC): Don't redefine.
|
|
||||||
---
|
|
||||||
gcc/config/riscv/linux.h | 10 ----------
|
|
||||||
1 file changed, 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/gcc/config/riscv/linux.h b/gcc/config/riscv/linux.h
|
|
||||||
index b9557a75dc7..2fdfd930cf2 100644
|
|
||||||
--- a/gcc/config/riscv/linux.h
|
|
||||||
+++ b/gcc/config/riscv/linux.h
|
|
||||||
@@ -35,16 +35,6 @@ along with GCC; see the file COPYING3. If not see
|
|
||||||
#undef MUSL_DYNAMIC_LINKER
|
|
||||||
#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-riscv" XLEN_SPEC MUSL_ABI_SUFFIX ".so.1"
|
|
||||||
|
|
||||||
-/* Because RISC-V only has word-sized atomics, it requries libatomic where
|
|
||||||
- others do not. So link libatomic by default, as needed. */
|
|
||||||
-#undef LIB_SPEC
|
|
||||||
-#ifdef LD_AS_NEEDED_OPTION
|
|
||||||
-#define LIB_SPEC GNU_USER_TARGET_LIB_SPEC \
|
|
||||||
- " %{pthread:" LD_AS_NEEDED_OPTION " -latomic " LD_NO_AS_NEEDED_OPTION "}"
|
|
||||||
-#else
|
|
||||||
-#define LIB_SPEC GNU_USER_TARGET_LIB_SPEC " -latomic "
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
#define ICACHE_FLUSH_FUNC "__riscv_flush_icache"
|
|
||||||
|
|
||||||
#define CPP_SPEC "%{pthread:-D_REENTRANT}"
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
170
gcc.spec
170
gcc.spec
@ -1,11 +1,11 @@
|
|||||||
%global DATE 20230511
|
%global DATE 20231205
|
||||||
%global gitrev 55ca611b161ce96d568ea82ff0e6ea395dc76957
|
%global gitrev f783814ad6a04ae5ef44595216596a2b75eda15b
|
||||||
%global gcc_version 13.1.1
|
%global gcc_version 13.2.1
|
||||||
%global gcc_major 13
|
%global gcc_major 13
|
||||||
# Note, gcc_release must be integer, if you want to add suffixes to
|
# Note, gcc_release must be integer, if you want to add suffixes to
|
||||||
# %%{release}, append them after %%{gcc_release} on Release: line.
|
# %%{release}, append them after %%{gcc_release} on Release: line.
|
||||||
%global gcc_release 2
|
%global gcc_release 6
|
||||||
%global nvptx_tools_gitrev 93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b
|
%global nvptx_tools_gitrev aa3404ad5a496cda5d79a50bedb1344fd63e8763
|
||||||
%global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409
|
%global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409
|
||||||
%global _unpackaged_files_terminate_build 0
|
%global _unpackaged_files_terminate_build 0
|
||||||
%global _performance_build 1
|
%global _performance_build 1
|
||||||
@ -93,7 +93,7 @@
|
|||||||
%else
|
%else
|
||||||
%global build_libatomic 0
|
%global build_libatomic 0
|
||||||
%endif
|
%endif
|
||||||
%ifarch %{ix86} x86_64 %{arm} alpha ppc ppc64 ppc64le ppc64p7 s390 s390x aarch64 riscv64
|
%ifarch %{ix86} x86_64 %{arm} alpha ppc ppc64 ppc64le ppc64p7 s390 s390x aarch64
|
||||||
%global build_libitm 1
|
%global build_libitm 1
|
||||||
%else
|
%else
|
||||||
%global build_libitm 0
|
%global build_libitm 0
|
||||||
@ -136,7 +136,7 @@
|
|||||||
Summary: Various compilers (C, C++, Objective-C, ...)
|
Summary: Various compilers (C, C++, Objective-C, ...)
|
||||||
Name: gcc
|
Name: gcc
|
||||||
Version: %{gcc_version}
|
Version: %{gcc_version}
|
||||||
Release: %{gcc_release}.2.riscv64%{?dist}
|
Release: %{gcc_release}%{?dist}
|
||||||
# libgcc, libgfortran, libgomp, libstdc++ and crtstuff have
|
# libgcc, libgfortran, libgomp, libstdc++ and crtstuff have
|
||||||
# GCC Runtime Exception.
|
# GCC Runtime Exception.
|
||||||
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
|
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
|
||||||
@ -286,17 +286,11 @@ Patch8: gcc13-no-add-needed.patch
|
|||||||
Patch9: gcc13-Wno-format-security.patch
|
Patch9: gcc13-Wno-format-security.patch
|
||||||
Patch10: gcc13-rh1574936.patch
|
Patch10: gcc13-rh1574936.patch
|
||||||
Patch11: gcc13-d-shared-libphobos.patch
|
Patch11: gcc13-d-shared-libphobos.patch
|
||||||
|
Patch12: gcc13-pr110792.patch
|
||||||
|
|
||||||
Patch50: isl-rh2155127.patch
|
Patch50: isl-rh2155127.patch
|
||||||
|
|
||||||
Patch100: gcc13-fortran-fdec-duplicates.patch
|
Patch100: gcc13-fortran-fdec-duplicates.patch
|
||||||
Patch101: gcc13-fortran-flogical-as-integer.patch
|
|
||||||
Patch102: gcc13-fortran-fdec-override-kind.patch
|
|
||||||
Patch103: gcc13-fortran-fdec-non-logical-if.patch
|
|
||||||
|
|
||||||
# RISCV (atomic)
|
|
||||||
Patch150: 55088cf384d4c43e280ec794217e32fab64070ba.patch
|
|
||||||
Patch151: 203f3060dd363361b172f7295f42bb6bf5ac0b3b.patch
|
|
||||||
|
|
||||||
# On ARM EABI systems, we do want -gnueabi to be part of the
|
# On ARM EABI systems, we do want -gnueabi to be part of the
|
||||||
# target triple.
|
# target triple.
|
||||||
@ -382,7 +376,11 @@ Summary: GNU Standard C++ Library
|
|||||||
Autoreq: true
|
Autoreq: true
|
||||||
Requires: glibc >= 2.10.90-7
|
Requires: glibc >= 2.10.90-7
|
||||||
BuildRequires: tzdata >= 2017c
|
BuildRequires: tzdata >= 2017c
|
||||||
|
%if 0%{?fedora} > 38 || 0%{?rhel} > 9
|
||||||
|
Recommends: tzdata >= 2017c
|
||||||
|
%else
|
||||||
Requires: tzdata >= 2017c
|
Requires: tzdata >= 2017c
|
||||||
|
%endif
|
||||||
|
|
||||||
%description -n libstdc++
|
%description -n libstdc++
|
||||||
The libstdc++ package contains a rewritten standard compliant GCC Standard
|
The libstdc++ package contains a rewritten standard compliant GCC Standard
|
||||||
@ -866,20 +864,13 @@ so that there cannot be any synchronization problems.
|
|||||||
%patch -P10 -p0 -b .rh1574936~
|
%patch -P10 -p0 -b .rh1574936~
|
||||||
%endif
|
%endif
|
||||||
%patch -P11 -p0 -b .d-shared-libphobos~
|
%patch -P11 -p0 -b .d-shared-libphobos~
|
||||||
|
%patch -P12 -p0 -b .pr110792~
|
||||||
|
|
||||||
%patch -P50 -p0 -b .rh2155127~
|
%patch -P50 -p0 -b .rh2155127~
|
||||||
touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4
|
touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4
|
||||||
|
|
||||||
%if 0%{?rhel} >= 9
|
%if 0%{?rhel} >= 9
|
||||||
%patch -P100 -p1 -b .fortran-fdec-duplicates~
|
%patch -P100 -p1 -b .fortran-fdec-duplicates~
|
||||||
%patch -P101 -p1 -b .fortran-flogical-as-integer~
|
|
||||||
%patch -P102 -p1 -b .fortran-fdec-override-kind~
|
|
||||||
%patch -P103 -p1 -b .fortran-fdec-non-logical-if~
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%ifarch riscv64
|
|
||||||
%patch -P150 -p1 -b .riscv-inline-atomics~
|
|
||||||
%patch -P151 -p1 -b .riscv-nolibatomic-pthread~
|
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%ifarch %{arm}
|
%ifarch %{arm}
|
||||||
@ -997,13 +988,6 @@ ISL_FLAG_PIC=-fPIC
|
|||||||
ISL_FLAG_PIC=-fpic
|
ISL_FLAG_PIC=-fpic
|
||||||
%endif
|
%endif
|
||||||
cd isl-build
|
cd isl-build
|
||||||
|
|
||||||
%ifarch riscv64
|
|
||||||
# Update config.{sub,guess} scripts for riscv64 (the original ones are too old)
|
|
||||||
cp -f -v /usr/lib/rpm/redhat/config.guess ../../isl-%{isl_version}/config.guess
|
|
||||||
cp -f -v /usr/lib/rpm/redhat/config.sub ../../isl-%{isl_version}/config.sub
|
|
||||||
%endif
|
|
||||||
|
|
||||||
sed -i 's|libisl\([^-]\)|libgcc13privateisl\1|g' \
|
sed -i 's|libisl\([^-]\)|libgcc13privateisl\1|g' \
|
||||||
../../isl-%{isl_version}/Makefile.{am,in}
|
../../isl-%{isl_version}/Makefile.{am,in}
|
||||||
../../isl-%{isl_version}/configure \
|
../../isl-%{isl_version}/configure \
|
||||||
@ -2559,9 +2543,6 @@ end
|
|||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/htmxlintrin.h
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/htmxlintrin.h
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/vecintrin.h
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/vecintrin.h
|
||||||
%endif
|
%endif
|
||||||
%ifarch riscv64
|
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_vector.h
|
|
||||||
%endif
|
|
||||||
%if %{build_libasan}
|
%if %{build_libasan}
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sanitizer
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sanitizer
|
||||||
%endif
|
%endif
|
||||||
@ -3478,16 +3459,123 @@ end
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Thu May 18 2023 David Abdurachmanov <davidlt@rivosinc.com> 13.1.1-2.2.riscv64
|
* Tue Dec 5 2023 Jakub Jelinek <jakub@redhat.com> 13.2.1-6
|
||||||
- On riscv64 include these backports to fix libatomic issues:
|
- update from releases/gcc-13 branch
|
||||||
- 55088cf384d4c43e280ec794217e32fab64070ba (from gcc13 branch)
|
- PRs c++/33799, c++/102191, c++/111703, c++/112269, c++/112301, c++/112633,
|
||||||
- 203f3060dd363361b172f7295f42bb6bf5ac0b3b (from master branch)
|
c/112339, fortran/111880, fortran/112764, libgomp/111413,
|
||||||
|
libstdc++/112348, libstdc++/112491, libstdc++/112607,
|
||||||
|
middle-end/111497, target/53372, target/110411, target/111408,
|
||||||
|
target/111815, target/111828, target/112672, tree-optimization/111137,
|
||||||
|
tree-optimization/111465, tree-optimization/111967,
|
||||||
|
tree-optimization/112496
|
||||||
|
|
||||||
* Sat May 13 2023 David Abdurachmanov <davidlt@rivosinc.com> 13.1.1-2.0.riscv64
|
* Mon Nov 13 2023 Jakub Jelinek <jakub@redhat.com> 13.2.1-5
|
||||||
- Update config.{sub,guess} scripts for ISL
|
- update from releases/gcc-13 branch
|
||||||
- Fix annobin plugin Fedora version check
|
- PRs c++/89038, c/111884, d/110712, d/112270, fortran/67740, fortran/97245,
|
||||||
- Package riscv_vector.h (vector intrinsics) header
|
fortran/111837, fortran/112316, libbacktrace/111315,
|
||||||
- Enable libitm for riscv64
|
libbacktrace/112263, libstdc++/110944, libstdc++/111172,
|
||||||
|
libstdc++/111936, libstdc++/112089, libstdc++/112314,
|
||||||
|
middle-end/111253, middle-end/111818, modula2/111756, modula2/112110,
|
||||||
|
target/101177, target/110170, target/111001, target/111366,
|
||||||
|
target/111367, target/111380, target/111935, target/112443,
|
||||||
|
tree-optimization/111397, tree-optimization/111445,
|
||||||
|
tree-optimization/111489, tree-optimization/111583,
|
||||||
|
tree-optimization/111614, tree-optimization/111622,
|
||||||
|
tree-optimization/111694, tree-optimization/111764,
|
||||||
|
tree-optimization/111820, tree-optimization/111833,
|
||||||
|
tree-optimization/111917
|
||||||
|
- fix aarch64 RA ICE (#2241139, PR target/111528)
|
||||||
|
- fix ia32 doubleword rotates (#2238781, PR target/110792)
|
||||||
|
|
||||||
|
* Wed Oct 11 2023 Jakub Jelinek <jakub@redhat.com> 13.2.1-4
|
||||||
|
- update from releases/gcc-13 branch
|
||||||
|
- PRs ada/110488, ada/111434, c++/99631, c++/111471, c++/111485, c++/111493,
|
||||||
|
c++/111512, fortran/68155, fortran/92586, fortran/111674,
|
||||||
|
libstdc++/108046, libstdc++/111050, libstdc++/111102,
|
||||||
|
libstdc++/111511, middle-end/111699, modula2/111510, target/111121,
|
||||||
|
target/111411, tree-optimization/110315, tree-optimization/110386,
|
||||||
|
tree-optimization/111331, tree-optimization/111519
|
||||||
|
|
||||||
|
* Mon Sep 18 2023 Jakub Jelinek <jakub@redhat.com> 13.2.1-3
|
||||||
|
- update from releases/gcc-13 branch
|
||||||
|
- PRs c++/111357, modula2/111330, target/96762, target/111306,
|
||||||
|
target/111335, target/111340, target/111412
|
||||||
|
|
||||||
|
* Fri Sep 8 2023 Jakub Jelinek <jakub@redhat.com> 13.2.1-2
|
||||||
|
- update from releases/gcc-13 branch
|
||||||
|
- PRs c++/92407, c++/106310, c++/106652, c++/109678, c++/109751, c++/110197,
|
||||||
|
c++/110566, c++/110927, debug/111080, fortran/99326, fortran/102109,
|
||||||
|
fortran/102112, fortran/102190, fortran/102532, fortran/108961,
|
||||||
|
fortran/109684, fortran/109948, fortran/110825, libgcc/110956,
|
||||||
|
libstdc++/110593, libstdc++/110708, libstdc++/110719,
|
||||||
|
libstdc++/110807, libstdc++/110860, libstdc++/110862,
|
||||||
|
libstdc++/110917, libstdc++/110968, libstdc++/110970,
|
||||||
|
libstdc++/110974, libstdc++/110990, middle-end/111017, modula2/108119,
|
||||||
|
modula2/108344, modula2/109779, modula2/109810, modula2/109830,
|
||||||
|
modula2/109879, modula2/109908, modula2/109952, modula2/110003,
|
||||||
|
modula2/110019, modula2/110125, modula2/110126, modula2/110161,
|
||||||
|
modula2/110174, modula2/110189, modula2/110284, modula2/110631,
|
||||||
|
modula2/110779, modula2/110865, target/89835, target/109713,
|
||||||
|
target/109725, target/110220, target/110484, target/110741,
|
||||||
|
target/111010, target/111127, tree-optimization/110280,
|
||||||
|
tree-optimization/110702, tree-optimization/110914,
|
||||||
|
tree-optimization/111015, tree-optimization/111019,
|
||||||
|
tree-optimization/111039, tree-optimization/111070,
|
||||||
|
tree-optimization/111109
|
||||||
|
|
||||||
|
* Mon Jul 31 2023 Patsy Griffin <patsy@redhat.com>
|
||||||
|
- allow for the optional removal of tzdata
|
||||||
|
- see https://fedoraproject.org/wiki/Changes/AllowRemovalOfTzdata
|
||||||
|
|
||||||
|
* Fri Jul 28 2023 Jakub Jelinek <jakub@redhat.com> 13.2.1-1
|
||||||
|
- update from releases/gcc-13 branch
|
||||||
|
- GCC 13.2 release
|
||||||
|
- PRs c++/109247, c++/110102, c++/110122, c++/110463, c++/110468,
|
||||||
|
c++/110524, c++/110535, c++/110595, c++/110809, d/103944, d/106977,
|
||||||
|
d/108842, d/108962, d/110113, d/110359, d/110471, d/110514, d/110516,
|
||||||
|
debug/110295, fortran/86277, fortran/95947, fortran/100297,
|
||||||
|
fortran/110288, fortran/110585, fortran/110658, ipa/109983,
|
||||||
|
ipa/110276, libgcc/109712, libgcc/110179, libstdc++/95048,
|
||||||
|
libstdc++/100285, libstdc++/104299, libstdc++/109741,
|
||||||
|
libstdc++/109921, libstdc++/110149, libstdc++/110239,
|
||||||
|
libstdc++/110432, libstdc++/110542, libstdc++/110574,
|
||||||
|
middle-end/98619, middle-end/103979, middle-end/110055,
|
||||||
|
middle-end/110420, modula2/108121, modula2/109586, modula2/109675,
|
||||||
|
modula2/109729, modula2/110246, rtl-optimization/110237,
|
||||||
|
target/101469, target/105325, target/106966, target/108743,
|
||||||
|
target/109932, target/110011, target/110100, target/110132,
|
||||||
|
target/110136, target/110206, target/110264, target/110309,
|
||||||
|
target/110406, target/110560, target/110624, testsuite/66005,
|
||||||
|
testsuite/83904, testsuite/110230, tree-optimization/109143,
|
||||||
|
tree-optimization/110228, tree-optimization/110298,
|
||||||
|
tree-optimization/110381, tree-optimization/110392,
|
||||||
|
tree-optimization/110515, tree-optimization/110556,
|
||||||
|
tree-optimization/110557, tree-optimization/110669,
|
||||||
|
tree-optimization/110731, tree-optimization/110755,
|
||||||
|
tree-optimization/110766, tree-optimization/110799,
|
||||||
|
tree-optimization/110829
|
||||||
|
|
||||||
|
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 13.1.1-4.1
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jun 14 2023 Jakub Jelinek <jakub@redhat.com> 13.1.1-4
|
||||||
|
- update from releases/gcc-13 branch
|
||||||
|
- PRs bootstrap/110085, c++/109871, fortran/100607, libgcc/109670,
|
||||||
|
libgcc/109685, libstdc++/108178, libstdc++/109261, libstdc++/109758,
|
||||||
|
libstdc++/109822, libstdc++/109949, libstdc++/110139,
|
||||||
|
middle-end/110200, target/82931, target/92729, target/104327,
|
||||||
|
target/105753, target/106907, target/109547, target/109650,
|
||||||
|
target/109800, target/109939, target/109954, target/110036,
|
||||||
|
target/110044, target/110088, target/110108, target/110227,
|
||||||
|
tree-optimization/109505, tree-optimization/110165,
|
||||||
|
tree-optimization/110166
|
||||||
|
|
||||||
|
* Fri May 19 2023 Jakub Jelinek <jakub@redhat.com> 13.1.1-3
|
||||||
|
- update from releases/gcc-13 branch
|
||||||
|
- PRs c++/80488, c++/83258, c++/97700, c++/103807, c++/109651, c++/109745,
|
||||||
|
c++/109761, c++/109774, c++/109868, c++/109884, fortran/109641,
|
||||||
|
fortran/109846, libstdc++/109816, libstdc++/109883, target/104338,
|
||||||
|
target/109697
|
||||||
|
|
||||||
* Thu May 11 2023 Jakub Jelinek <jakub@redhat.com> 13.1.1-2
|
* Thu May 11 2023 Jakub Jelinek <jakub@redhat.com> 13.1.1-2
|
||||||
- update from releases/gcc-13 branch
|
- update from releases/gcc-13 branch
|
||||||
|
@ -1,378 +0,0 @@
|
|||||||
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
|
|
||||||
@@ -506,6 +506,10 @@ fdec-override-kind
|
|
||||||
Fortran Var(flag_dec_override_kind)
|
|
||||||
Enable support for per variable kind specification.
|
|
||||||
|
|
||||||
+fdec-non-logical-if
|
|
||||||
+Fortran Var(flag_dec_non_logical_if)
|
|
||||||
+Enable support for non-logical expressions in if statements.
|
|
||||||
+
|
|
||||||
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 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
|
|
||||||
|
|
@ -1,588 +0,0 @@
|
|||||||
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
|
|
||||||
|
|
@ -1,305 +0,0 @@
|
|||||||
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
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
|||||||
<a class="link" href="https://www.fsf.org" target="_top">FSF
|
<a class="link" href="https://www.fsf.org" target="_top">FSF
|
||||||
</a>
|
</a>
|
||||||
</p><p>
|
</p><p>
|
||||||
+ Release 13.1.1
|
+ Release 13.2.1
|
||||||
+ </p><p>
|
+ </p><p>
|
||||||
Permission is granted to copy, distribute and/or modify this
|
Permission is granted to copy, distribute and/or modify this
|
||||||
document under the terms of the GNU Free Documentation
|
document under the terms of the GNU Free Documentation
|
||||||
@ -17,7 +17,7 @@
|
|||||||
</p><p>
|
</p><p>
|
||||||
- The API documentation, rendered into HTML, can be viewed online
|
- The API documentation, rendered into HTML, can be viewed online
|
||||||
+ The API documentation, rendered into HTML, can be viewed locally
|
+ The API documentation, rendered into HTML, can be viewed locally
|
||||||
+ <a class="link" href="api/index.html" target="_top">for the 13.1.1 release</a>,
|
+ <a class="link" href="api/index.html" target="_top">for the 13.2.1 release</a>,
|
||||||
+ online
|
+ online
|
||||||
<a class="link" href="http://gcc.gnu.org/onlinedocs/" target="_top">for each GCC release</a>
|
<a class="link" href="http://gcc.gnu.org/onlinedocs/" target="_top">for each GCC release</a>
|
||||||
and
|
and
|
||||||
|
@ -5,7 +5,7 @@ libtool sucks.
|
|||||||
rpath="$finalize_rpath"
|
rpath="$finalize_rpath"
|
||||||
test "$mode" != relink && rpath="$compile_rpath$rpath"
|
test "$mode" != relink && rpath="$compile_rpath$rpath"
|
||||||
for libdir in $rpath; do
|
for libdir in $rpath; do
|
||||||
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64|/usr/lib/../lib64/lp64d) continue;; esac
|
+ 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_flag_spec"; then
|
||||||
if test -n "$hardcode_libdir_separator"; then
|
if test -n "$hardcode_libdir_separator"; then
|
||||||
if test -z "$hardcode_libdirs"; then
|
if test -z "$hardcode_libdirs"; then
|
||||||
@ -13,7 +13,7 @@ libtool sucks.
|
|||||||
rpath=
|
rpath=
|
||||||
hardcode_libdirs=
|
hardcode_libdirs=
|
||||||
for libdir in $compile_rpath $finalize_rpath; do
|
for libdir in $compile_rpath $finalize_rpath; do
|
||||||
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64|/usr/lib/../lib64/lp64d) continue;; esac
|
+ 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_flag_spec"; then
|
||||||
if test -n "$hardcode_libdir_separator"; then
|
if test -n "$hardcode_libdir_separator"; then
|
||||||
if test -z "$hardcode_libdirs"; then
|
if test -z "$hardcode_libdirs"; then
|
||||||
@ -21,7 +21,7 @@ libtool sucks.
|
|||||||
rpath=
|
rpath=
|
||||||
hardcode_libdirs=
|
hardcode_libdirs=
|
||||||
for libdir in $finalize_rpath; do
|
for libdir in $finalize_rpath; do
|
||||||
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64|/usr/lib/../lib64/lp64d) continue;; esac
|
+ 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_flag_spec"; then
|
||||||
if test -n "$hardcode_libdir_separator"; then
|
if test -n "$hardcode_libdir_separator"; then
|
||||||
if test -z "$hardcode_libdirs"; then
|
if test -z "$hardcode_libdirs"; then
|
||||||
|
163
gcc13-pr110792.patch
Normal file
163
gcc13-pr110792.patch
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
PR target/110792: Early clobber issues with rot32di2_doubleword on i386.
|
||||||
|
|
||||||
|
This patch is a conservative fix for PR target/110792, a wrong-code
|
||||||
|
regression affecting doubleword rotations by BITS_PER_WORD, which
|
||||||
|
effectively swaps the highpart and lowpart words, when the source to be
|
||||||
|
rotated resides in memory. The issue is that if the register used to
|
||||||
|
hold the lowpart of the destination is mentioned in the address of
|
||||||
|
the memory operand, the current define_insn_and_split unintentionally
|
||||||
|
clobbers it before reading the highpart.
|
||||||
|
|
||||||
|
Hence, for the testcase, the incorrectly generated code looks like:
|
||||||
|
|
||||||
|
salq $4, %rdi // calculate address
|
||||||
|
movq WHIRL_S+8(%rdi), %rdi // accidentally clobber addr
|
||||||
|
movq WHIRL_S(%rdi), %rbp // load (wrong) lowpart
|
||||||
|
|
||||||
|
Traditionally, the textbook way to fix this would be to add an
|
||||||
|
explicit early clobber to the instruction's constraints.
|
||||||
|
|
||||||
|
(define_insn_and_split "<insn>32di2_doubleword"
|
||||||
|
- [(set (match_operand:DI 0 "register_operand" "=r,r,r")
|
||||||
|
+ [(set (match_operand:DI 0 "register_operand" "=r,r,&r")
|
||||||
|
(any_rotate:DI (match_operand:DI 1 "nonimmediate_operand" "0,r,o")
|
||||||
|
(const_int 32)))]
|
||||||
|
|
||||||
|
but unfortunately this currently generates significantly worse code,
|
||||||
|
due to a strange choice of reloads (effectively memcpy), which ends up
|
||||||
|
looking like:
|
||||||
|
|
||||||
|
salq $4, %rdi // calculate address
|
||||||
|
movdqa WHIRL_S(%rdi), %xmm0 // load the double word in SSE reg.
|
||||||
|
movaps %xmm0, -16(%rsp) // store the SSE reg back to the stack
|
||||||
|
movq -8(%rsp), %rdi // load highpart
|
||||||
|
movq -16(%rsp), %rbp // load lowpart
|
||||||
|
|
||||||
|
Note that reload's "&" doesn't distinguish between the memory being
|
||||||
|
early clobbered, vs the registers used in an addressing mode being
|
||||||
|
early clobbered.
|
||||||
|
|
||||||
|
The fix proposed in this patch is to remove the third alternative, that
|
||||||
|
allowed offsetable memory as an operand, forcing reload to place the
|
||||||
|
operand into a register before the rotation. This results in:
|
||||||
|
|
||||||
|
salq $4, %rdi
|
||||||
|
movq WHIRL_S(%rdi), %rax
|
||||||
|
movq WHIRL_S+8(%rdi), %rdi
|
||||||
|
movq %rax, %rbp
|
||||||
|
|
||||||
|
I believe there's a more advanced solution, by swapping the order of
|
||||||
|
the loads (if first destination register is mentioned in the address),
|
||||||
|
or inserting a lea insn (if both destination registers are mentioned
|
||||||
|
in the address), but this fix is a minimal "safe" solution, that
|
||||||
|
should hopefully be suitable for backporting.
|
||||||
|
|
||||||
|
2023-08-06 Roger Sayle <roger@nextmovesoftware.com>
|
||||||
|
|
||||||
|
gcc/testsuite/ChangeLog
|
||||||
|
PR target/110792
|
||||||
|
* gcc.target/i386/pr110792.c: Remove dg-final scan-assembler-not.
|
||||||
|
|
||||||
|
2023-08-03 Roger Sayle <roger@nextmovesoftware.com>
|
||||||
|
|
||||||
|
gcc/ChangeLog
|
||||||
|
PR target/110792
|
||||||
|
* config/i386/i386.md (<any_rotate>ti3): For rotations by 64 bits
|
||||||
|
place operand in a register before gen_<insn>64ti2_doubleword.
|
||||||
|
(<any_rotate>di3): Likewise, for rotations by 32 bits, place
|
||||||
|
operand in a register before gen_<insn>32di2_doubleword.
|
||||||
|
(<any_rotate>32di2_doubleword): Constrain operand to be in register.
|
||||||
|
(<any_rotate>64ti2_doubleword): Likewise.
|
||||||
|
|
||||||
|
gcc/testsuite/ChangeLog
|
||||||
|
PR target/110792
|
||||||
|
* g++.target/i386/pr110792.C: New 32-bit C++ test case.
|
||||||
|
* gcc.target/i386/pr110792.c: New 64-bit C test case.
|
||||||
|
|
||||||
|
--- gcc/config/i386/i386.md
|
||||||
|
+++ gcc/config/i386/i386.md
|
||||||
|
@@ -15341,7 +15341,10 @@ (define_expand "<insn>ti3"
|
||||||
|
emit_insn (gen_ix86_<insn>ti3_doubleword
|
||||||
|
(operands[0], operands[1], operands[2]));
|
||||||
|
else if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 64)
|
||||||
|
- emit_insn (gen_<insn>64ti2_doubleword (operands[0], operands[1]));
|
||||||
|
+ {
|
||||||
|
+ operands[1] = force_reg (TImode, operands[1]);
|
||||||
|
+ emit_insn (gen_<insn>64ti2_doubleword (operands[0], operands[1]));
|
||||||
|
+ }
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rtx amount = force_reg (QImode, operands[2]);
|
||||||
|
@@ -15376,7 +15379,10 @@ (define_expand "<insn>di3"
|
||||||
|
emit_insn (gen_ix86_<insn>di3_doubleword
|
||||||
|
(operands[0], operands[1], operands[2]));
|
||||||
|
else if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 32)
|
||||||
|
- emit_insn (gen_<insn>32di2_doubleword (operands[0], operands[1]));
|
||||||
|
+ {
|
||||||
|
+ operands[1] = force_reg (DImode, operands[1]);
|
||||||
|
+ emit_insn (gen_<insn>32di2_doubleword (operands[0], operands[1]));
|
||||||
|
+ }
|
||||||
|
else
|
||||||
|
FAIL;
|
||||||
|
|
||||||
|
@@ -15544,8 +15550,8 @@ (define_insn_and_split "ix86_rotr<dwi>3_doubleword"
|
||||||
|
})
|
||||||
|
|
||||||
|
(define_insn_and_split "<insn>32di2_doubleword"
|
||||||
|
- [(set (match_operand:DI 0 "register_operand" "=r,r,r")
|
||||||
|
- (any_rotate:DI (match_operand:DI 1 "nonimmediate_operand" "0,r,o")
|
||||||
|
+ [(set (match_operand:DI 0 "register_operand" "=r,r")
|
||||||
|
+ (any_rotate:DI (match_operand:DI 1 "register_operand" "0,r")
|
||||||
|
(const_int 32)))]
|
||||||
|
"!TARGET_64BIT"
|
||||||
|
"#"
|
||||||
|
@@ -15562,8 +15568,8 @@ (define_insn_and_split "<insn>32di2_doubleword"
|
||||||
|
})
|
||||||
|
|
||||||
|
(define_insn_and_split "<insn>64ti2_doubleword"
|
||||||
|
- [(set (match_operand:TI 0 "register_operand" "=r,r,r")
|
||||||
|
- (any_rotate:TI (match_operand:TI 1 "nonimmediate_operand" "0,r,o")
|
||||||
|
+ [(set (match_operand:TI 0 "register_operand" "=r,r")
|
||||||
|
+ (any_rotate:TI (match_operand:TI 1 "register_operand" "0,r")
|
||||||
|
(const_int 64)))]
|
||||||
|
"TARGET_64BIT"
|
||||||
|
"#"
|
||||||
|
--- gcc/testsuite/g++.target/i386/pr110792.C
|
||||||
|
+++ gcc/testsuite/g++.target/i386/pr110792.C
|
||||||
|
@@ -0,0 +1,16 @@
|
||||||
|
+/* { dg-do compile { target ia32 } } */
|
||||||
|
+/* { dg-options "-O2" } */
|
||||||
|
+
|
||||||
|
+template <int ROT, typename T>
|
||||||
|
+inline T rotr(T input)
|
||||||
|
+{
|
||||||
|
+ return static_cast<T>((input >> ROT) | (input << (8 * sizeof(T) - ROT)));
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+unsigned long long WHIRL_S[256] = {0x18186018C07830D8};
|
||||||
|
+unsigned long long whirl(unsigned char x0)
|
||||||
|
+{
|
||||||
|
+ const unsigned long long s4 = WHIRL_S[x0&0xFF];
|
||||||
|
+ return rotr<32>(s4);
|
||||||
|
+}
|
||||||
|
+/* { dg-final { scan-assembler-not "movl\tWHIRL_S\\+4\\(,%eax,8\\), %eax" } } */
|
||||||
|
--- gcc/testsuite/gcc.target/i386/pr110792.c
|
||||||
|
+++ gcc/testsuite/gcc.target/i386/pr110792.c
|
||||||
|
@@ -0,0 +1,17 @@
|
||||||
|
+/* { dg-do compile { target int128 } } */
|
||||||
|
+/* { dg-options "-O2" } */
|
||||||
|
+
|
||||||
|
+static inline unsigned __int128 rotr(unsigned __int128 input)
|
||||||
|
+{
|
||||||
|
+ return ((input >> 64) | (input << (64)));
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+unsigned __int128 WHIRL_S[256] = {((__int128)0x18186018C07830D8) << 64 |0x18186018C07830D8};
|
||||||
|
+unsigned __int128 whirl(unsigned char x0)
|
||||||
|
+{
|
||||||
|
+ register int t __asm("rdi") = x0&0xFF;
|
||||||
|
+ const unsigned __int128 s4 = WHIRL_S[t];
|
||||||
|
+ register unsigned __int128 tt __asm("rdi") = rotr(s4);
|
||||||
|
+ asm("":::"memory");
|
||||||
|
+ return tt;
|
||||||
|
+}
|
13
plans/ci.fmf
13
plans/ci.fmf
@ -1,10 +1,13 @@
|
|||||||
summary: CI Gating Plan
|
summary: CI Gating Plan
|
||||||
discover:
|
discover:
|
||||||
how: fmf
|
how: fmf
|
||||||
directory: tests
|
url: https://src.fedoraproject.org/tests/gcc.git
|
||||||
prepare:
|
filter: 'tag: Fedora-CI-gating'
|
||||||
- name: prepare
|
|
||||||
how: shell
|
|
||||||
script: ./plans/prepare.sh
|
|
||||||
execute:
|
execute:
|
||||||
how: tmt
|
how: tmt
|
||||||
|
adjust:
|
||||||
|
- prepare+:
|
||||||
|
- name: Add secondary architecture RPMs
|
||||||
|
how: shell
|
||||||
|
script: ./plans/provide_secondary_arch_rpms.sh
|
||||||
|
when: arch == x86_64
|
||||||
|
@ -1,54 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
#
|
|
||||||
# Setup task for Fedora CI system. Install the x86_64 GCC build under test
|
|
||||||
# along with its respective i686 (compat arch) bits needed for the testing.
|
|
||||||
# KOJI_TASK_ID per https://github.com/fedora-ci/dist-git-pipeline/pull/50 .
|
|
||||||
#
|
|
||||||
|
|
||||||
set -x
|
|
||||||
|
|
||||||
true "V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V"
|
|
||||||
|
|
||||||
echo "KOJI_TASK_ID=$KOJI_TASK_ID"
|
|
||||||
|
|
||||||
. /etc/os-release
|
|
||||||
|
|
||||||
if [ "$ID" == "fedora" ] && [ "$(arch)" == "x86_64" ]; then
|
|
||||||
|
|
||||||
if [ -z "${KOJI_TASK_ID}" ]; then
|
|
||||||
echo "Missing koji task ID, skipping ..."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
tmpd=`mktemp -d`
|
|
||||||
pushd $tmpd
|
|
||||||
koji download-task $KOJI_TASK_ID --noprogress --arch=src
|
|
||||||
ls
|
|
||||||
VR=$(rpm -qp gcc* --queryformat='%{version}-%{release}')
|
|
||||||
popd
|
|
||||||
rm -rf $tmpd
|
|
||||||
|
|
||||||
tmpd=`mktemp -d`
|
|
||||||
pushd $tmpd
|
|
||||||
koji download-task $KOJI_TASK_ID --noprogress --arch=x86_64 --arch=noarch
|
|
||||||
rm -f *debuginfo*
|
|
||||||
ls
|
|
||||||
dnf -y install *.rpm
|
|
||||||
popd
|
|
||||||
rm -rf $tmpd
|
|
||||||
|
|
||||||
tmpd=`mktemp -d`
|
|
||||||
pushd $tmpd
|
|
||||||
koji download-task $KOJI_TASK_ID --noprogress --arch=i686
|
|
||||||
rm -f *debuginfo*
|
|
||||||
ls
|
|
||||||
yum -y install libgcc-$VR* libgfortran-$VR* libgomp-$VR* libitm-$VR* \
|
|
||||||
libstdc++-devel-$VR* libstdc++-$VR* libstdc++-static-$VR*
|
|
||||||
popd
|
|
||||||
rm -rf $tmpd
|
|
||||||
else
|
|
||||||
echo "Not Fedora x86_64, skipping..."
|
|
||||||
fi
|
|
||||||
|
|
||||||
true "^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^"
|
|
64
plans/provide_secondary_arch_rpms.sh
Executable file
64
plans/provide_secondary_arch_rpms.sh
Executable file
@ -0,0 +1,64 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Fedora CI testing systems don't provide a repository with the i686
|
||||||
|
# RPMs of the build being tested. As a consequence, most
|
||||||
|
# dnf install -y <some-gcc-rpm>.i686
|
||||||
|
# commands (whether being run by a test or by TMT's prepare) will probably
|
||||||
|
# fail on a version mismatch with the present x86_64 gcc RPMs. To prevent
|
||||||
|
# such failures we provide this script which we recommend to include in every
|
||||||
|
# Fedora CI test plan.
|
||||||
|
#
|
||||||
|
# Implementation notes:
|
||||||
|
#
|
||||||
|
# * The gcc build being tested in Fedora CI is given via KOJI_TASK_ID. See
|
||||||
|
# https://github.com/fedora-ci/dist-git-pipeline/pull/50 for details.
|
||||||
|
#
|
||||||
|
# * Currently this script just downloads and installs the i686 RPMs. It
|
||||||
|
# would not be sufficient for tests that uninstall and reinstall those
|
||||||
|
# RPMs. If such a test appears, this script should create a repository.
|
||||||
|
#
|
||||||
|
# * Fedora CI testing systems seem to have extremely small RAM-based /tmp,
|
||||||
|
# unable to host all the downloaded RPMs, and no other "real" filesystem
|
||||||
|
# than "/". That's the reason for using
|
||||||
|
# mktemp -d --tmpdir=/
|
||||||
|
|
||||||
|
set -x
|
||||||
|
|
||||||
|
true "V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V-V"
|
||||||
|
|
||||||
|
echo "KOJI_TASK_ID=$KOJI_TASK_ID"
|
||||||
|
|
||||||
|
. /etc/os-release
|
||||||
|
|
||||||
|
echo "ID=$ID"
|
||||||
|
echo "arch=$(arch)"
|
||||||
|
echo "KOJI_TASK_ID=$KOJI_TASK_ID"
|
||||||
|
|
||||||
|
if [[ "$ID" = fedora ]] && [[ "$(arch)" = x86_64 ]] && [[ -n "$KOJI_TASK_ID" ]]; then
|
||||||
|
|
||||||
|
if tmpd=$(mktemp -d --tmpdir=/) && pushd "$tmpd"; then
|
||||||
|
|
||||||
|
# Download
|
||||||
|
rpm -q koji || dnf -y install koji
|
||||||
|
koji download-task "$KOJI_TASK_ID" --noprogress --arch={x86_64,i686,noarch}
|
||||||
|
|
||||||
|
# Remove conflicting RPMs
|
||||||
|
rm -f ./*debuginfo* ./*debugsource*
|
||||||
|
rm -f gcc-[0-9]*.i686.*
|
||||||
|
rm -f ./*docs*.i686.*
|
||||||
|
|
||||||
|
# Install
|
||||||
|
ls
|
||||||
|
dnf -y install ./*.rpm
|
||||||
|
|
||||||
|
# Clean up
|
||||||
|
# shellcheck disable=SC2164
|
||||||
|
popd
|
||||||
|
rm -rf "$tmpd"
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "Not applicable"
|
||||||
|
fi
|
||||||
|
|
||||||
|
true "^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^"
|
4
sources
4
sources
@ -1,4 +1,4 @@
|
|||||||
SHA512 (gcc-13.1.1-20230511.tar.xz) = 0ba5b1db652992b1abd356ac36a48c9db4ecd01c751ae3488dd8680199e678845d59bfb4b8d747b91bca258ea8d5a2c274f3bbb2039dd4de2f65942dd902a616
|
SHA512 (gcc-13.2.1-20231205.tar.xz) = f132a2d35d6ea0b0d82043870f1c9f60dda119e63df6833b16d20e2c93e2978f62698d4cc72a6e2eefbaeded0683107de9ebeb93923b96c57dcd612504aa6a1b
|
||||||
SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95
|
SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95
|
||||||
SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983
|
SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983
|
||||||
SHA512 (nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz) = c719fad8689b2b6f3c888d0308604ddef884037d71ec3e755c68052d30075a181c29358fda516833ace437921b17602b147be7886317be94ec9736faa8cb52be
|
SHA512 (nvptx-tools-aa3404ad5a496cda5d79a50bedb1344fd63e8763.tar.xz) = 33a024326426375533cb5dd9b68b2508f37540be418d2506bfa19a5f5866485e9af150469064e9059b68136ad8cb080b3b12e7eb5c6b7d1288cf6bfb3f6bb5d0
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
main ()
|
|
||||||
{
|
|
||||||
int i = 2;
|
|
||||||
if (-10 * abs (i - 1) == 10 * abs (i - 1))
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,26 +0,0 @@
|
|||||||
summary: gcc optimization error for neg number * abs() [extract_muldiv]
|
|
||||||
description: |
|
|
||||||
abs() from gcc was broken so it gave wrong results.
|
|
||||||
contact: mcermak@redhat.com
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: bash ./runtest.sh
|
|
||||||
path: /tests/Regression/394271-gcc-optimization-error-for-neg-number-abs
|
|
||||||
framework: beakerlib
|
|
||||||
require:
|
|
||||||
- gcc
|
|
||||||
duration: 5m
|
|
||||||
enabled: true
|
|
||||||
tier: '1'
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=394271
|
|
||||||
tag:
|
|
||||||
- CI-Tier-1
|
|
||||||
- DTS8-INTEROP-CI
|
|
||||||
- DTS9-INTEROP-CI
|
|
||||||
- Tier1
|
|
||||||
- dts_smoke
|
|
||||||
- dts_stable
|
|
||||||
extra-nitrate: TC#0062143
|
|
||||||
extra-summary: /tools/gcc/Regression/gcc/394271-gcc-optimization-error-for-neg-number-abs
|
|
||||||
extra-task: /tools/gcc/Regression/gcc/394271-gcc-optimization-error-for-neg-number-abs
|
|
@ -1,52 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
# Author: Michal Nowak <mnowak@redhat.com>
|
|
||||||
# Marek Polacek <polacek@redhat.com>
|
|
||||||
|
|
||||||
# Include rhts environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
GCC="${GCC:-$(type -P gcc)}"
|
|
||||||
PACKAGE=$(rpm --qf '%{name}' -qf $GCC)
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
rlAssertRpm $PACKAGE
|
|
||||||
rlRun "TmpDir=\`mktemp -d\`"
|
|
||||||
rlRun "cp -v abs.c $TmpDir"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
gcc -dumpversion | grep -q '^4\.4' && export OLDGCC="true"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest "Testing the executable"
|
|
||||||
OPTS="-O0 -O1 -O2 -O3 -Os -Ofast -Og"
|
|
||||||
if [ "$OLDGCC" = "true" ]; then
|
|
||||||
OPTS=${OPTS/ -Ofast -Og/}
|
|
||||||
fi
|
|
||||||
for opt in "" $OPTS; do
|
|
||||||
rlRun "$GCC -g $opt -o abs$opt abs.c" 0 "Compiling the test case [ $opt ]"
|
|
||||||
rlRun "./abs$opt" 0 "Checking whether we have an working executable [ $opt ]"
|
|
||||||
done
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -r $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,29 +0,0 @@
|
|||||||
summary: unzip problem with CRC error for src-4.1.0.zip file on s390x
|
|
||||||
description: |
|
|
||||||
A customer has been trying to unzip the file src-4.1.0.zip
|
|
||||||
which is contained libgcj4-src-4.1.0-18.EL4.s390x.rpm. However,
|
|
||||||
unzip command can't run correctly with the CRC errors
|
|
||||||
It seems that the src-4.1.0.zip is broken.
|
|
||||||
contact: mcermak@redhat.com
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: bash ./runtest.sh
|
|
||||||
framework: beakerlib
|
|
||||||
require:
|
|
||||||
- gcc
|
|
||||||
- libgcj-src
|
|
||||||
duration: 5m
|
|
||||||
enabled: true
|
|
||||||
tag:
|
|
||||||
- CI-Tier-1
|
|
||||||
- Tier1
|
|
||||||
tier: '1'
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=462397
|
|
||||||
adjust:
|
|
||||||
- enabled: false
|
|
||||||
when: distro != rhel-5 and distro != rhel-6
|
|
||||||
continue: false
|
|
||||||
extra-nitrate: TC#0147365
|
|
||||||
extra-summary: /tools/gcc/Sanity/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file
|
|
||||||
extra-task: /tools/gcc/Sanity/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file
|
|
@ -1,53 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
# Author: Michal Nowak <mnowak@redhat.com>
|
|
||||||
# Marek Polacek <polacek@redhat.com>
|
|
||||||
|
|
||||||
# Include rhts environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
PACKAGES=(gcc libgcj-src)
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
for p in "${PACKAGES[@]}"; do
|
|
||||||
rlAssertRpm "$p"
|
|
||||||
done; unset p
|
|
||||||
rlRun "TmpDir=\`mktemp -d\`"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
srclist="/usr/share/java/src-*"
|
|
||||||
for src in ${srclist}; do
|
|
||||||
|
|
||||||
rlPhaseStartTest "Try to unzip src file"
|
|
||||||
rm -rf tmp/; mkdir tmp/
|
|
||||||
rlRun "cp -fv ${src} tmp/" 0 "[${src}]: Copy the zip file to tmp/"
|
|
||||||
cd tmp/
|
|
||||||
rlRun "unzip ${src}" 0 "[${src}] Verify that is possible to unzip ${src}"
|
|
||||||
cd ..
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
done
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -r $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,22 +0,0 @@
|
|||||||
subroutine a
|
|
||||||
INTEGER*4 a_i
|
|
||||||
common /block/a_i
|
|
||||||
a_i = 1
|
|
||||||
end subroutine a
|
|
||||||
subroutine b
|
|
||||||
INTEGER*4 b_i
|
|
||||||
common /block/b_i
|
|
||||||
a_i = 3
|
|
||||||
b_i = 2
|
|
||||||
end subroutine b
|
|
||||||
subroutine c
|
|
||||||
INTEGER*4 a_i
|
|
||||||
common /block/a_i
|
|
||||||
if (a_i .ne. 2) call abort
|
|
||||||
end subroutine c
|
|
||||||
program abc
|
|
||||||
call a
|
|
||||||
call b
|
|
||||||
call c
|
|
||||||
end program abc
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
|||||||
summary: Fortran DW_TAG_common_block has incorrect placement/scope
|
|
||||||
description: |+
|
|
||||||
Problem: gcc-4.3.2 / gfortran-4.3.2 (in the forthcoming tech-preview for
|
|
||||||
RHEL5.3) appears to also have the "DW_TAG_common_block has incorrect
|
|
||||||
placement/scope" issues listed in the following gcc upstream bug:
|
|
||||||
|
|
||||||
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37738
|
|
||||||
|
|
||||||
What gfortran is doing currently is:
|
|
||||||
|
|
||||||
(1) Merges all common blocks into a single one.
|
|
||||||
(2) Places this single common block into the first subroutine where it was
|
|
||||||
used.
|
|
||||||
|
|
||||||
contact: mcermak@redhat.com
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: bash ./runtest.sh
|
|
||||||
path: /tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope
|
|
||||||
framework: beakerlib
|
|
||||||
require:
|
|
||||||
- gcc
|
|
||||||
- gcc-gfortran
|
|
||||||
duration: 5m
|
|
||||||
tier: '1'
|
|
||||||
enabled: true
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=465974
|
|
||||||
tag:
|
|
||||||
- CI-Tier-1
|
|
||||||
- DTS8-INTEROP-CI
|
|
||||||
- DTS9-INTEROP-CI
|
|
||||||
- Tier1
|
|
||||||
- dts_smoke
|
|
||||||
- dts_stable
|
|
||||||
extra-nitrate: TC#0062268
|
|
||||||
extra-summary: /tools/gcc/g77/465974-DW_TAG_common_block-has-incorrect-placement-scope
|
|
||||||
extra-task: /tools/gcc/g77/465974-DW_TAG_common_block-has-incorrect-placement-scope
|
|
@ -1,56 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
# Author: Michal Nowak <mnowak@redhat.com>
|
|
||||||
# Marek Polacek <polacek@redhat.com>
|
|
||||||
|
|
||||||
# Include rhts environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
PACKAGES=(gcc gcc-gfortran)
|
|
||||||
|
|
||||||
GFORTRAN=${GFORTRAN:-gfortran}
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
if type gcc | grep -q -v toolset; then
|
|
||||||
# assert only of not devtoolset/gcc-toolset
|
|
||||||
for p in "${PACKAGES[@]}"; do
|
|
||||||
rlAssertRpm "$p"
|
|
||||||
done; unset p
|
|
||||||
fi
|
|
||||||
rlRun "TmpDir=\`mktemp -d\`"
|
|
||||||
rlRun "cp -v abc.f90 $TmpDir"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest "Testing the executable via readelf -w"
|
|
||||||
# Compile
|
|
||||||
rlRun "$GFORTRAN -g -o abc abc.f90" 0 "Compiling the test case: abc.f90"
|
|
||||||
rlRun "./abc" 0 "Checking whether we have an working executable"
|
|
||||||
rlWatchdog "readelf -w abc 2>&1 | tee gcc-readelf.log" 10
|
|
||||||
rlAssert0 "Checking if 'readelf' ends itself" $?
|
|
||||||
# Test
|
|
||||||
cb=$(grep Abbrev gcc-readelf.log | grep DW_TAG_common_block -c)
|
|
||||||
rlRun "if [ ${cb} -eq 3 ]; then true; else false; fi" 0 "Expected amount of common blocks is 3; got ${cb}"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -r $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,29 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
/* Compile flags:
|
|
||||||
* gcc -fno-builtin-isascii -fno-builtin-isalnum -o builtin builtin.c
|
|
||||||
*
|
|
||||||
* Expected output:
|
|
||||||
* Using custom isascii() function
|
|
||||||
* ret = 0
|
|
||||||
*
|
|
||||||
* Expected return value:
|
|
||||||
* 0
|
|
||||||
*/
|
|
||||||
|
|
||||||
int isascii(int c)
|
|
||||||
{
|
|
||||||
printf("Using custom isascii() function\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
main()
|
|
||||||
{
|
|
||||||
int c = 65;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
ret = isascii(c);
|
|
||||||
printf("ret = %d\n", ret);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
@ -1,33 +0,0 @@
|
|||||||
summary: 'Test for bz515799 ([RHEL5] gcc: if more than one -fno-builtin-*)'
|
|
||||||
description: |
|
|
||||||
Bug summary: [RHEL5] gcc: if more than one -fno-builtin-* options are specified, only the last one is effective
|
|
||||||
Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=515799
|
|
||||||
|
|
||||||
This test compiles builtin.c with the flags '-fno-builtin-isascii
|
|
||||||
-fno-builtin-isalnum'. This program contains a custom isascii() function
|
|
||||||
that always returns 0. If gcc honors the -fno-builtin-isascii flag, it
|
|
||||||
will return 0. If not, it will use the built-in isascii() function which
|
|
||||||
will return 1.
|
|
||||||
contact: mcermak@redhat.com
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: bash ./runtest.sh
|
|
||||||
path: /tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin
|
|
||||||
framework: beakerlib
|
|
||||||
require:
|
|
||||||
- gcc
|
|
||||||
duration: 5m
|
|
||||||
enabled: true
|
|
||||||
tier: '1'
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=515799
|
|
||||||
tag:
|
|
||||||
- CI-Tier-1
|
|
||||||
- DTS8-INTEROP-CI
|
|
||||||
- DTS9-INTEROP-CI
|
|
||||||
- Tier1
|
|
||||||
- dts_smoke
|
|
||||||
- dts_stable
|
|
||||||
extra-nitrate: TC#0063259
|
|
||||||
extra-summary: /tools/gcc/Regression/gcc/515799-RHEL5-gcc-if-more-than-one-fno-builtin
|
|
||||||
extra-task: /tools/gcc/Regression/gcc/515799-RHEL5-gcc-if-more-than-one-fno-builtin
|
|
@ -1,58 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# vim: dict=/usr/share/rhts-library/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# runtest.sh of /tools/gcc/Regression/gcc/515799-RHEL5-gcc-if-more-than-one-fno-builtin
|
|
||||||
# Description: Test for bz515799 ([RHEL5] gcc: if more than one -fno-builtin-*)
|
|
||||||
# Author: Jeffrey Bastian <jbastian@redhat.com>
|
|
||||||
# Marek Polacek <polacek@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2009, 2012 Red Hat, Inc. All rights reserved.
|
|
||||||
#
|
|
||||||
# This copyrighted material is made available to anyone wishing
|
|
||||||
# to use, modify, copy, or redistribute it subject to the terms
|
|
||||||
# and conditions of the GNU General Public License version 2.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public
|
|
||||||
# License along with this program; if not, write to the Free
|
|
||||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
# Boston, MA 02110-1301, USA.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
# Include rhts environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
PACKAGES=(gcc)
|
|
||||||
|
|
||||||
GCC=${GCC:-gcc}
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
for p in "${PACKAGES[@]}"; do
|
|
||||||
rlAssertRpm "$p"
|
|
||||||
done; unset p
|
|
||||||
rlRun "TmpDir=\`mktemp -d\`"
|
|
||||||
rlRun "cp -v builtin.c $TmpDir"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest
|
|
||||||
rlRun "$GCC -fno-builtin-isascii -fno-builtin-isalnum -o builtin builtin.c"
|
|
||||||
rlAssertExists "builtin"
|
|
||||||
rlRun "./builtin"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -r $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,5 +0,0 @@
|
|||||||
public class foo {
|
|
||||||
public static void main(String[] args) {
|
|
||||||
System.loadLibrary("foolib");
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
summary: 'CVE-2009-3736 libtool: libltdl may load and execute code from a library
|
|
||||||
in the current directory'
|
|
||||||
description: |
|
|
||||||
cat > ~/foo.java <\EOF public class foo { public static void main(String[] args) { System.loadLibrary("foolib"); } } EOF
|
|
||||||
cd
|
|
||||||
gcj -C foo.java
|
|
||||||
cd /tmp
|
|
||||||
strace -f -v -s1024 gij -cp ~/ foo 2>&1 | grep foolib
|
|
||||||
|
|
||||||
(resp. s/gcj/gcj4/g;s/gij/gij4/ for gcc4 testing).
|
|
||||||
|
|
||||||
If any relative path is seen, it is wrong. Bad examples are
|
|
||||||
|
|
||||||
{lib,}foolib.la
|
|
||||||
{hwcap,0,nosegneg}/{lib,}foolib.{so,la}
|
|
||||||
contact: mcermak@redhat.com
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: ./runtest.sh
|
|
||||||
framework: beakerlib
|
|
||||||
require:
|
|
||||||
- gcc
|
|
||||||
- gcc-java
|
|
||||||
- libgcj
|
|
||||||
- strace
|
|
||||||
duration: 5m
|
|
||||||
enabled: false
|
|
||||||
tag:
|
|
||||||
- CI-Tier-1
|
|
||||||
- Tier1
|
|
||||||
tier: '1'
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=537941
|
|
||||||
adjust:
|
|
||||||
- enabled: true
|
|
||||||
when: distro == rhel-6 or distro == rhel-5
|
|
||||||
extra-nitrate: TC#0062145
|
|
||||||
extra-summary: /tools/gcc/Regression/gcj/537941-libltdl-may-load-library-in-current-directory
|
|
||||||
extra-task: /tools/gcc/Regression/gcj/537941-libltdl-may-load-library-in-current-directory
|
|
@ -1,71 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
# Author: Michal Nowak <mnowak@redhat.com>
|
|
||||||
# Marek Polacek <polacek@redhat.com>
|
|
||||||
|
|
||||||
# Include rhts environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
PACKAGES=(gcc libgcj strace gcc-java)
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
for p in "${PACKAGES[@]}"; do
|
|
||||||
rlAssertRpm "$p"
|
|
||||||
done; unset p
|
|
||||||
rlRun "TmpDir=\`mktemp -d\`"
|
|
||||||
rlRun "cp -v foo.java $TmpDir"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
# I weeded out the if (isRHEL 3) support.
|
|
||||||
for gj in "" "4"; do
|
|
||||||
gcj_name="/usr/bin/gcj${gj}"
|
|
||||||
gij_name="/usr/bin/gij${gj}"
|
|
||||||
if [ -x ${gcj_name} ] && [ -x ${gij_name} ]; then
|
|
||||||
gcj_basename=$(basename ${gcj_name})
|
|
||||||
gij_basename=$(basename ${gij_name})
|
|
||||||
|
|
||||||
rlPhaseStartTest "[${gij_basename}] Interpreting and compiling via java"
|
|
||||||
rlRun "${gcj_name} -C foo.java" 0 "[${gcj_basename}] Creating bytecode"
|
|
||||||
mv foo.class ~
|
|
||||||
pushd /tmp
|
|
||||||
|
|
||||||
echo "Dry run w/o strace"
|
|
||||||
${gij_basename} -cp ~/ foo
|
|
||||||
|
|
||||||
echo "=== Dry run end ==="
|
|
||||||
strace -f -v -s1024 ${gij_basename} -cp ~/ foo 2>&1 | tee out.${gij_basename}
|
|
||||||
echo
|
|
||||||
grep foolib out.${gij_basename}
|
|
||||||
foolib_cnt="$(grep foolib out.${gij_basename} -c)"
|
|
||||||
echo
|
|
||||||
rlRun "if [ ${foolib_cnt} -ne 0 ]; then egrep '\"libfoolib.la|\"foolib.la' out.${gij_basename}; else echo \"Zero lines w/ foolib\"; true; fi" 1 "[${gij_basename}] Interpreting test case" # use 'true' (sic!)
|
|
||||||
popd
|
|
||||||
rm -f ~/foo.class
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -r $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,32 +0,0 @@
|
|||||||
summary: Test for BZ#1611637 (devtoolset-8-gcc includes avx512vbmi2intrin.h but)
|
|
||||||
description: |
|
|
||||||
Bug summary: devtoolset-8-gcc includes avx512vbmi2intrin.h but does not contain it
|
|
||||||
Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1611637
|
|
||||||
|
|
||||||
The list of intrinsic headers keeps changing every release, sometimes
|
|
||||||
even on the release branch, and %files needs to be in sync with what has
|
|
||||||
been changed in gcc/config.gcc. immintrin.h is one of those headers and
|
|
||||||
this test makes sure that we can #include it.
|
|
||||||
contact: Vaclav Kadlcik <vkadlcik@redhat.com>
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: bash ./runtest.sh
|
|
||||||
framework: beakerlib
|
|
||||||
require:
|
|
||||||
- gcc
|
|
||||||
duration: 5m
|
|
||||||
enabled: true
|
|
||||||
tag:
|
|
||||||
- CI-Tier-1
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1611637
|
|
||||||
adjust:
|
|
||||||
- enabled: false
|
|
||||||
when: arch != x86_64
|
|
||||||
continue: false
|
|
||||||
- enabled: false
|
|
||||||
when: distro == rhel-5
|
|
||||||
continue: false
|
|
||||||
extra-nitrate: TC#0575308
|
|
||||||
extra-summary: /tools/gcc/Regression/bz1611637-immintrin_h_include_list_does_not_match_release
|
|
||||||
extra-task: /tools/gcc/Regression/bz1611637-immintrin_h_include_list_does_not_match_release
|
|
@ -1,54 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# runtest.sh of /tools/gcc/Regression/bz1611637-immintrin_h_include_list_does_not_match_release
|
|
||||||
# Description: Test for BZ#1611637 (devtoolset-8-gcc includes avx512vbmi2intrin.h but)
|
|
||||||
# Author: Michael Petlan <mpetlan@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2018 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# This program 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 2 of
|
|
||||||
# the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see http://www.gnu.org/licenses/.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
# Include Beaker environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
GCC=${GCC:-gcc}
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
cat > a.c <<EOF
|
|
||||||
#include <immintrin.h>
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
rlAssertExists "a.c"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest
|
|
||||||
rlRun "$GCC -o a a.c"
|
|
||||||
rlAssertExists "a"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun "rm -f a a.c"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,12 +0,0 @@
|
|||||||
summary: Test for BZ#1815504 (Regression in the line information debug)
|
|
||||||
description: |
|
|
||||||
Bug summary: Regression in the line information debug information generated by gcc
|
|
||||||
Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1815504
|
|
||||||
recommend:
|
|
||||||
- gcc
|
|
||||||
- valgrind
|
|
||||||
duration: 5m
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1815504
|
|
||||||
extra-summary: /tools/gcc/Regression/bz1815504-Regression-in-the-line-information-debug
|
|
||||||
extra-task: /tools/gcc/Regression/bz1815504-Regression-in-the-line-information-debug
|
|
@ -1,50 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# runtest.sh of /tools/gcc/Regression/bz1815504-Regression-in-the-line-information-debug
|
|
||||||
# Description: Test for BZ#1815504 (Regression in the line information debug)
|
|
||||||
# Author: Alexandra Hájková <ahajkova@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2021 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# This program 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 2 of
|
|
||||||
# the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see http://www.gnu.org/licenses/.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
# Include Beaker environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
PACKAGE="gcc"
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
rlAssertRpm $PACKAGE
|
|
||||||
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest
|
|
||||||
rlRun "valgrind -q date &> log" 0
|
|
||||||
rlAssertNotGrep "Can't handle inlined call info entry with line number" log
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,17 +0,0 @@
|
|||||||
summary: Test for BZ#1852781 (Compiling with -flto and -g removes CET support)
|
|
||||||
description: |
|
|
||||||
Bug summary: Compiling with -flto and -g removes CET support
|
|
||||||
Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1852781
|
|
||||||
contact: Alexandra Hájková <ahajkova@redhat.com>
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: ./runtest.sh
|
|
||||||
framework: beakerlib
|
|
||||||
recommend:
|
|
||||||
- gcc
|
|
||||||
- binutils
|
|
||||||
duration: 15m
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1852781
|
|
||||||
extra-summary: /tools/gcc/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support
|
|
||||||
extra-task: /tools/gcc/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support
|
|
@ -1,55 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# runtest.sh of /tools/gcc/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support
|
|
||||||
# Description: Test for BZ#1852781 (Compiling with -flto and -g removes CET support)
|
|
||||||
# Author: Alexandra Hájková <ahajkova@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2020 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# This program 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 2 of
|
|
||||||
# the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see http://www.gnu.org/licenses/.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
# Include Beaker environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
PACKAGE="gcc"
|
|
||||||
TESTPROG="x"
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
rlAssertRpm $PACKAGE
|
|
||||||
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
|
|
||||||
rlRun "cp $TESTPROG.c $TmpDir"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest
|
|
||||||
rlRun "gcc -flto -c -fcf-protection -g $TESTPROG.c"
|
|
||||||
rlRun "gcc -flto -Wl,-z,cet-report=error -fcf-protection -g $TESTPROG.o &> log"
|
|
||||||
rlAssertNotGrep " missing IBT and SHSTK properties" log
|
|
||||||
rlRun "readelf --wide --notes a.out | grep IBT &> log"
|
|
||||||
rlAsserGrep "IBT, SHSTK" log
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,8 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
main ()
|
|
||||||
{
|
|
||||||
printf ("hello\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
summary: Test for BZ#1853900 (typeinfo for stdcodecvt_utf8<wchar_t, 1114111ul,)
|
|
||||||
description: |
|
|
||||||
Bug summary: typeinfo for std::codecvt_utf8<wchar_t, 1114111ul, (std::codecvt_mode)0> not found
|
|
||||||
Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1853900
|
|
||||||
contact: Alexandra Hájková <ahajkova@redhat.com>
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: ./runtest.sh
|
|
||||||
framework: beakerlib
|
|
||||||
recommend:
|
|
||||||
- gcc
|
|
||||||
- gcc-c++
|
|
||||||
duration: 10m
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1853900
|
|
||||||
extra-summary: /tools/gcc/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul
|
|
||||||
extra-task: /tools/gcc/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul
|
|
@ -1,52 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# runtest.sh of /tools/gcc/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul
|
|
||||||
# Description: Test for BZ#1853900 (typeinfo for stdcodecvt_utf8<wchar_t, 1114111ul,)
|
|
||||||
# Author: Alexandra Hájková <ahajkova@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2020 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# This program 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 2 of
|
|
||||||
# the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see http://www.gnu.org/licenses/.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
# Include Beaker environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
PACKAGE="gcc"
|
|
||||||
TESTPROG="test.cc"
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
rlAssertRpm $PACKAGE
|
|
||||||
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
|
|
||||||
rlRun "cp $TESTPROG $TmpDir"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest
|
|
||||||
rlRun "g++ -std=c++17 $TESTPROG &> log"
|
|
||||||
rlAssertNotGrep "hidden symbol " log
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,7 +0,0 @@
|
|||||||
#include <filesystem>
|
|
||||||
|
|
||||||
namespace fs = std::filesystem;
|
|
||||||
int main() {
|
|
||||||
fs::create_directory("sandbox");
|
|
||||||
fs::remove_all("sandbox");
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
summary: Test for BZ#1878841 (GOMP_parallel_loop_nonmonotonic_dynamic and)
|
|
||||||
description: |
|
|
||||||
Bug summary: GOMP_parallel_loop_nonmonotonic_dynamic and GOMP_loop_nonmonotonic_dynamic_next missing
|
|
||||||
Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1878841
|
|
||||||
contact: Alexandra Hájková <ahajkova@redhat.com>
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: ./runtest.sh
|
|
||||||
framework: beakerlib
|
|
||||||
recommend:
|
|
||||||
- gcc
|
|
||||||
duration: 5m
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1878841
|
|
||||||
extra-summary: /tools/gcc/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and
|
|
||||||
extra-task: /tools/gcc/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and
|
|
@ -1,52 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# runtest.sh of /tools/gcc/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and
|
|
||||||
# Description: Test for BZ#1878841 (GOMP_parallel_loop_nonmonotonic_dynamic and)
|
|
||||||
# Author: Alexandra Hájková <ahajkova@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2020 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# This program 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 2 of
|
|
||||||
# the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see http://www.gnu.org/licenses/.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
# Include Beaker environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
PACKAGE="gcc"
|
|
||||||
TESTPROG="tst"
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
rlAssertRpm $PACKAGE
|
|
||||||
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
|
|
||||||
rlRun "cp $TESTPROG.c $TmpDir"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest
|
|
||||||
rlRun "gcc -fopenmp $TESTPROG.c &> log"
|
|
||||||
rlAssertNotGrep "undefined reference to `GOMP_parallel_loop_nonmonotonic_dynamic`" log
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,6 +0,0 @@
|
|||||||
#include <omp.h>
|
|
||||||
int main ()
|
|
||||||
{
|
|
||||||
#pragma omp parallel for schedule(dynamic)
|
|
||||||
for (int i = 0; i < 10; i++);
|
|
||||||
}
|
|
@ -1,2 +0,0 @@
|
|||||||
info functions foo
|
|
||||||
q
|
|
@ -1,17 +0,0 @@
|
|||||||
summary: Test for BZ#1893340 (Variadic arguments are missing from debugging data)
|
|
||||||
description: |
|
|
||||||
Bug summary: Variadic arguments are missing from debugging data when building with -flto
|
|
||||||
Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1893340
|
|
||||||
contact: Alexandra Hájková <ahajkova@redhat.com>
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: ./runtest.sh
|
|
||||||
framework: beakerlib
|
|
||||||
recommend:
|
|
||||||
- gcc
|
|
||||||
- gdb
|
|
||||||
duration: 5m
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1893340
|
|
||||||
extra-summary: /tools/gcc/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data
|
|
||||||
extra-task: /tools/gcc/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data
|
|
@ -1,52 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# runtest.sh of /tools/gcc/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data
|
|
||||||
# Description: Test for BZ#1893340 (Variadic arguments are missing from debugging data)
|
|
||||||
# Author: Alexandra Hájková <ahajkova@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2021 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# This program 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 2 of
|
|
||||||
# the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see http://www.gnu.org/licenses/.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
# Include Beaker environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
PACKAGE="gcc"
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
rlAssertRpm $PACKAGE
|
|
||||||
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
|
|
||||||
rlRun "cp test.c b.gdb $TmpDir"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest
|
|
||||||
rlRun "gcc -fPIC -shared -o libtest.so -O0 -g test.c"
|
|
||||||
rlRun "gdb -x b.gdb libtest.so > gdb.log"
|
|
||||||
rlAssertGrep "void foo(int, ...);" gdb.log
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,6 +0,0 @@
|
|||||||
#include <stdarg.h>
|
|
||||||
void foo(int args, ...) {
|
|
||||||
va_list ap;
|
|
||||||
va_start(ap, args);
|
|
||||||
va_end(ap);
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
summary: Test for BZ#1896093 (Compiling with -flto=auto fails if make is not)
|
|
||||||
description: |
|
|
||||||
Bug summary: Compiling with -flto=auto fails if make is not installed
|
|
||||||
Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1896093
|
|
||||||
contact: Alexandra Hájková <ahajkova@redhat.com>
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: ./runtest.sh
|
|
||||||
framework: beakerlib
|
|
||||||
recommend:
|
|
||||||
- gcc
|
|
||||||
duration: 5m
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1896093
|
|
||||||
extra-summary: /tools/gcc/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not
|
|
||||||
extra-task: /tools/gcc/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not
|
|
@ -1,56 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# runtest.sh of /tools/gcc/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not
|
|
||||||
# Description: Test for BZ#1896093 (Compiling with -flto=auto fails if make is not)
|
|
||||||
# Author: Alexandra Hájková <ahajkova@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2020 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# This program 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 2 of
|
|
||||||
# the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see http://www.gnu.org/licenses/.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
# Include Beaker environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
PACKAGE="gcc"
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
MAKE_WAS_PRESENT=false
|
|
||||||
rpm -q make &>/dev/null && MAKE_WAS_PRESENT=true
|
|
||||||
rlAssertRpm $PACKAGE
|
|
||||||
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
rlRun "rpm -e --nodeps make" 0,1
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest
|
|
||||||
echo "void main() { }" | gcc -x c -flto=auto - &> log
|
|
||||||
rlAssertNotGrep "lto-wrapper: fatal error: execvp: No such file or directory" log
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
if $MAKE_WAS_PRESENT; then
|
|
||||||
rpm -q make &>/dev/null || rlRun "yum -y install make"
|
|
||||||
fi
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,5 +0,0 @@
|
|||||||
program test_allocated
|
|
||||||
integer :: i = 4
|
|
||||||
real(4), allocatable :: x(:)
|
|
||||||
if (.not. allocated(x)) allocate(x(i))
|
|
||||||
end program test_allocated
|
|
@ -1,17 +0,0 @@
|
|||||||
summary: Test for BZ#1927579 (libgfortran seems to be missing)
|
|
||||||
description: |
|
|
||||||
Bug summary: libgfortran seems to be missing _gfortran_os_error_at
|
|
||||||
Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1927579
|
|
||||||
contact: Alexandra Hájková <ahajkova@redhat.com>
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: ./runtest.sh
|
|
||||||
framework: beakerlib
|
|
||||||
recommend:
|
|
||||||
- gcc
|
|
||||||
- gcc-gfortran
|
|
||||||
duration: 5m
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1927579
|
|
||||||
extra-summary: /tools/gcc/Regression/bz1927579-libgfortran-seems-to-be-missing
|
|
||||||
extra-task: /tools/gcc/Regression/bz1927579-libgfortran-seems-to-be-missing
|
|
@ -1,51 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# runtest.sh of /tools/gcc/Regression/bz1927579-libgfortran-seems-to-be-missing
|
|
||||||
# Description: Test for BZ#1927579 (libgfortran seems to be missing)
|
|
||||||
# Author: Alexandra Hájková <ahajkova@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2021 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# This program 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 2 of
|
|
||||||
# the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see http://www.gnu.org/licenses/.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
# Include Beaker environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
PACKAGE="gcc"
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
rlAssertRpm $PACKAGE
|
|
||||||
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
|
|
||||||
rlRun "cp alloc1.f90 $TmpDir"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest
|
|
||||||
rlRun "gfortran alloc1.f90" &> log
|
|
||||||
rlAssertNotGrep "alloc1.f90:(.text+0x131): undefined reference" log
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,17 +0,0 @@
|
|||||||
summary: Test for BZ#1939638 (gcc-toolset-10-libasan-devel depends on the wrong)
|
|
||||||
description: |
|
|
||||||
Bug summary: gcc-toolset-10-libasan-devel depends on the wrong libasan
|
|
||||||
Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1939638
|
|
||||||
contact: Alexandra Hájková <ahajkova@redhat.com>
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: ./runtest.sh
|
|
||||||
framework: beakerlib
|
|
||||||
recommend:
|
|
||||||
- gcc
|
|
||||||
- libasan
|
|
||||||
duration: 5m
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1939638
|
|
||||||
extra-summary: /tools/gcc/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong
|
|
||||||
extra-task: /tools/gcc/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong
|
|
@ -1,50 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# runtest.sh of /tools/gcc/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong
|
|
||||||
# Description: Test for BZ#1939638 (gcc-toolset-10-libasan-devel depends on the wrong)
|
|
||||||
# Author: Alexandra Hájková <ahajkova@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2021 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# This program 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 2 of
|
|
||||||
# the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see http://www.gnu.org/licenses/.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
# Include Beaker environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
PACKAGE="gcc"
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
rlAssertRpm $PACKAGE
|
|
||||||
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest
|
|
||||||
rlRun "echo 'int main () { return 0; }' | gcc -xc -fsanitize=address -" &> log
|
|
||||||
rlAssertNotGrep "cannot find /usr/lib64/libasan" log
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,27 +0,0 @@
|
|||||||
summary: Test for BZ#1960701 (Wrong-code regression starting with gcc 8.2)
|
|
||||||
description: |
|
|
||||||
Bug summary: Wrong-code regression starting with gcc 8.2
|
|
||||||
Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1960701
|
|
||||||
contact: Vaclav Kadlcik <vkadlcik@redhat.com>
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: bash ./runtest.sh
|
|
||||||
framework: beakerlib
|
|
||||||
require:
|
|
||||||
- gcc-c++
|
|
||||||
duration: 15m
|
|
||||||
enabled: true
|
|
||||||
tag:
|
|
||||||
- CI-Tier-1
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1960701
|
|
||||||
adjust:
|
|
||||||
- enabled: false
|
|
||||||
when: distro < rhel-8 and collection is not defined
|
|
||||||
continue: false
|
|
||||||
- enabled: false
|
|
||||||
when: distro ~< rhel-8.5 and collection is not defined
|
|
||||||
continue: false
|
|
||||||
extra-nitrate: TC#0610780
|
|
||||||
extra-summary: /tools/gcc/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2
|
|
||||||
extra-task: /tools/gcc/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2
|
|
@ -1,14 +0,0 @@
|
|||||||
#include <vector>
|
|
||||||
|
|
||||||
struct T {
|
|
||||||
unsigned a;
|
|
||||||
float b {8.};
|
|
||||||
};
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
T t = {1};
|
|
||||||
std::vector<T> tt = {{1}, {2}};
|
|
||||||
if (t.a != 1 || t.b != 8.0f || tt[0].a != 1 || tt[0].b != 8.0f || tt[1].a != 2 || tt[1].b != 8.0f)
|
|
||||||
__builtin_abort ();
|
|
||||||
}
|
|
@ -1,66 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# runtest.sh of /tools/gcc/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2
|
|
||||||
# Description: Test for BZ#1960701 (Wrong-code regression starting with gcc 8.2)
|
|
||||||
# Author: Vaclav Kadlcik <vkadlcik@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2021 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# This program 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 2 of
|
|
||||||
# the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see http://www.gnu.org/licenses/.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
# Include Beaker environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
# Notes on relevancy
|
|
||||||
#
|
|
||||||
# The test is applicable to GCCs supporting -std=c++17. In practice,
|
|
||||||
# * any supported toolset GCC
|
|
||||||
# * system GCC of RHEL 8+; however the respective fix landed in 8.5
|
|
||||||
# and isn't planned for backporting.
|
|
||||||
#
|
|
||||||
# Suggested TCMS relevancy:
|
|
||||||
# distro < rhel-8 && collection !defined: False
|
|
||||||
# distro < rhel-8.5 && collection !defined: False
|
|
||||||
|
|
||||||
GCC="${GCC:-$(type -P gcc)}"
|
|
||||||
PACKAGE=$(rpm --qf '%{name}\n' -qf $GCC | head -1)
|
|
||||||
PACKAGES="${PACKAGE} ${PACKAGE}-c++"
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
rlLogInfo "PACKAGES=$PACKAGES"
|
|
||||||
rlLogInfo "COLLECTIONS=$COLLECTIONS"
|
|
||||||
rlAssertRpm --all
|
|
||||||
rlRun "TmpDir=\$(mktemp -d)"
|
|
||||||
rlRun "cp reproducer.cc $TmpDir"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest
|
|
||||||
rlRun 'g++ -o reproducer -Wall -Wextra -std=c++17 reproducer.cc'
|
|
||||||
rlRun './reproducer'
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun 'popd'
|
|
||||||
rlRun "rm -r $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,16 +0,0 @@
|
|||||||
summary: Test for BZ#1965951 (Wrong-code regression starting with gcc 8.5)
|
|
||||||
description: |
|
|
||||||
Bug summary: Wrong-code regression starting with gcc 8.5
|
|
||||||
Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1965951
|
|
||||||
contact: Vaclav Kadlcik <vkadlcik@redhat.com>
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: ./runtest.sh
|
|
||||||
framework: beakerlib
|
|
||||||
recommend:
|
|
||||||
- gcc-c++
|
|
||||||
duration: 15m
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1965951
|
|
||||||
extra-summary: /tools/gcc/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5
|
|
||||||
extra-task: /tools/gcc/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5
|
|
@ -1,12 +0,0 @@
|
|||||||
#include <iostream>
|
|
||||||
struct S1 { virtual ~S1() = default; };
|
|
||||||
struct S2 { virtual void f1() = 0; };
|
|
||||||
struct S3: S1, S2 {
|
|
||||||
void f1() { f2(); }
|
|
||||||
virtual void f2() = 0;
|
|
||||||
};
|
|
||||||
struct S4: S3 {
|
|
||||||
void f2() { std::cout << "called\n"; }
|
|
||||||
using S2::f1;
|
|
||||||
};
|
|
||||||
int main() { S4().f1(); }
|
|
@ -1,55 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# runtest.sh of /tools/gcc/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5
|
|
||||||
# Description: Test for BZ#1965951 (Wrong-code regression starting with gcc 8.5)
|
|
||||||
# Author: Vaclav Kadlcik <vkadlcik@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2021 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# This program 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 2 of
|
|
||||||
# the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see http://www.gnu.org/licenses/.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
# Include Beaker environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
GCC="${GCC:-$(type -P gcc)}"
|
|
||||||
PACKAGE=$(rpm --qf '%{name}\n' -qf $GCC | head -1)
|
|
||||||
PACKAGES="${PACKAGE} ${PACKAGE}-c++"
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
rlLogInfo "PACKAGES=$PACKAGES"
|
|
||||||
rlRun "dnf -y install $PACKAGES" 0-255
|
|
||||||
rlAssertRpm --all
|
|
||||||
rlRun "TmpDir=\$(mktemp -d)"
|
|
||||||
rlRun "cp reproducer.cc $TmpDir"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest
|
|
||||||
rlRun 'g++ -o reproducer reproducer.cc'
|
|
||||||
rlRun './reproducer'
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun 'popd'
|
|
||||||
rlRun "rm -r $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,26 +0,0 @@
|
|||||||
summary: SystemTap fails to retrieve location attribute for local variable
|
|
||||||
description: ''
|
|
||||||
contact: mcermak@redhat.com
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
- systemtap
|
|
||||||
test: bash ./runtest.sh
|
|
||||||
framework: beakerlib
|
|
||||||
require:
|
|
||||||
- gcc
|
|
||||||
- systemtap
|
|
||||||
- kernel-devel
|
|
||||||
- kernel-headers
|
|
||||||
duration: 50m
|
|
||||||
enabled: true
|
|
||||||
tag:
|
|
||||||
- CI-Tier-1
|
|
||||||
- STAP-EWA
|
|
||||||
- mcu_stap
|
|
||||||
- mcu_stap_6g
|
|
||||||
- mcu_stap_7g
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=576287
|
|
||||||
extra-nitrate: TC#0062256
|
|
||||||
extra-summary: /tools/gcc/Regression/gcc/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable
|
|
||||||
extra-task: /tools/gcc/Regression/gcc/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable
|
|
@ -1,57 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Copyright (c) 2010 Red Hat, Inc. All rights reserved.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see http://www.gnu.org/licenses/.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
# Include rhts environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
PACKAGE="gcc"
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
rlAssertRpm $PACKAGE
|
|
||||||
kernel_uname="$(uname -a | awk '{ print $3 }')"
|
|
||||||
kernel_arch="$(uname -a | awk '{ print $12 }')"
|
|
||||||
echo kernel_arch: $kernel_arch
|
|
||||||
kernel_version="$(echo ${kernel_uname} | sed 's/-/ /' | awk '{ print $1 }')"
|
|
||||||
echo kernel_version: $kernel_version
|
|
||||||
kernel_release="$(echo ${kernel_uname} | sed 's/-/ /' | awk '{ print $2 }' | sed 's/\./ /g' | awk '{ print $1,".",$2 }' | sed 's/ //g')"
|
|
||||||
echo kernel_release_1: $kernel_release
|
|
||||||
if $(echo ${kernel_release} | grep -iq PAE); then
|
|
||||||
kernel_release="$(echo ${kernel_release} | sed 's/PAE//g' | sed 's/pae//g')"
|
|
||||||
PAE="PAE-"
|
|
||||||
fi
|
|
||||||
echo kernel_release_2: $kernel_release
|
|
||||||
if rlIsRHEL 6; then
|
|
||||||
arch="${kernel_arch}-"
|
|
||||||
fi
|
|
||||||
kernel_debug="http://download.devel.redhat.com/brewroot/packages/kernel/${kernel_version}/${kernel_release}/${kernel_arch}/kernel-${PAE}debuginfo-${kernel_version}-${kernel_release}.${kernel_arch}.rpm"
|
|
||||||
kernel_debug_common="http://download.devel.redhat.com/brewroot/packages/kernel/${kernel_version}/${kernel_release}/${kernel_arch}/kernel-debuginfo-common-${arch}${kernel_version}-${kernel_release}.${kernel_arch}.rpm"
|
|
||||||
echo ">>> $kernel_debug $kernel_debug_common"
|
|
||||||
debuginfo-install -y kernel
|
|
||||||
rpmquery kernel-debuginfo || rpm -ivh ${kernel_debug} ${kernel_debug_common}
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest opt-O$opt
|
|
||||||
rlRun "stap -vvvv -p2 -e 'probe kernel.function(\"sig_ignored\") {println($$parms)}' 2>&1 | grep 'variable location problem'" 1 "gcc produced good enough debuginfo w/o 'variable location problem'"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,15 +0,0 @@
|
|||||||
template <bool C> int func (void);
|
|
||||||
|
|
||||||
template <class T> struct Foo
|
|
||||||
{
|
|
||||||
static const unsigned int a = sizeof (T);
|
|
||||||
|
|
||||||
//enum { b = a };
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
c = sizeof (func < (a == 0) > ())
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
Foo <int> x;
|
|
@ -1,28 +0,0 @@
|
|||||||
summary: Try to compile a program that has a template parameter with a boolean expression
|
|
||||||
involving a templated static constant
|
|
||||||
description: ''
|
|
||||||
contact: mcermak@redhat.com
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: bash ./runtest.sh
|
|
||||||
path: /tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template
|
|
||||||
framework: beakerlib
|
|
||||||
require:
|
|
||||||
- gcc
|
|
||||||
- gcc-c++
|
|
||||||
- file
|
|
||||||
duration: 5m
|
|
||||||
enabled: true
|
|
||||||
tier: '1'
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=703059
|
|
||||||
tag:
|
|
||||||
- CI-Tier-1
|
|
||||||
- DTS8-INTEROP-CI
|
|
||||||
- DTS9-INTEROP-CI
|
|
||||||
- Tier1
|
|
||||||
- dts_smoke
|
|
||||||
- dts_stable
|
|
||||||
extra-nitrate: TC#0111110
|
|
||||||
extra-summary: /tools/gcc/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template
|
|
||||||
extra-task: /tools/gcc/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template
|
|
@ -1,54 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# runtest.sh of /tools/gcc/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template
|
|
||||||
# Description: Try to compile a program that has a template parameter with a boolean expression involving a templated static constant
|
|
||||||
# Author: Marek Polacek <mpolacek@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2011, 2012 Red Hat, Inc. All rights reserved.
|
|
||||||
#
|
|
||||||
# This copyrighted material is made available to anyone wishing
|
|
||||||
# to use, modify, copy, or redistribute it subject to the terms
|
|
||||||
# and conditions of the GNU General Public License version 2.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public
|
|
||||||
# License along with this program; if not, write to the Free
|
|
||||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
# Boston, MA 02110-1301, USA.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
# Include rhts environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
GXX=${GXX:-g++}
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
rlLog "GXX = $GXX"
|
|
||||||
rlLog "Installed within `rpmquery -f $(which $GXX)`"
|
|
||||||
rlRun "TmpDir=\`mktemp -d\`"
|
|
||||||
rlRun "cp -v f.cc $TmpDir"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest
|
|
||||||
rlRun "$GXX -c f.cc"
|
|
||||||
rlAssertExists "f.o"
|
|
||||||
rlRun "file f.o | grep ELF" # Basic obj file sanity check
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -r $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,31 +0,0 @@
|
|||||||
summary: Check to see if g++ throws unused parameter warnings with standard libraries
|
|
||||||
with option -Wall
|
|
||||||
contact: mcermak@redhat.com
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: bash ./runtest.sh
|
|
||||||
path: /tests/Regression/unused_parameter_warning
|
|
||||||
framework: beakerlib
|
|
||||||
require:
|
|
||||||
- gcc-c++
|
|
||||||
- glibc-devel
|
|
||||||
- libstdc++-devel
|
|
||||||
recommend:
|
|
||||||
- gcc44-c++
|
|
||||||
- glibc-devel.ppc64
|
|
||||||
- glibc-devel.ppc
|
|
||||||
- libstdc++43-devel.ppc
|
|
||||||
- libstdc++44-devel.ppc
|
|
||||||
- libstdc++-devel.ppc
|
|
||||||
duration: 10m
|
|
||||||
enabled: true
|
|
||||||
tier: '1'
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=201342
|
|
||||||
tag:
|
|
||||||
- CI-Tier-1
|
|
||||||
- Tier1
|
|
||||||
- dts_stable
|
|
||||||
extra-nitrate: TC#0062265
|
|
||||||
extra-summary: /tools/gcc/c++/unused_parameter_warning
|
|
||||||
extra-task: /tools/gcc/c++/unused_parameter_warning
|
|
@ -1,60 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# vim: dict=/usr/share/rhts-library/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2009, 2012 Red Hat, Inc. All rights reserved.
|
|
||||||
#
|
|
||||||
# This copyrighted material is made available to anyone wishing
|
|
||||||
# to use, modify, copy, or redistribute it subject to the terms
|
|
||||||
# and conditions of the GNU General Public License version 2.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public
|
|
||||||
# License along with this program; if not, write to the Free
|
|
||||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
# Boston, MA 02110-1301, USA.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# g++ - check for unused parameter warning
|
|
||||||
# expected exit code is 0
|
|
||||||
#
|
|
||||||
# Author: Sachin Prabhu <sprabhu@redhat.com>
|
|
||||||
# Maintainer: Marek Polacek <polacek@redhat.com>
|
|
||||||
|
|
||||||
|
|
||||||
# Include Beaker environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
PACKAGES=(gcc gcc-c++ grep)
|
|
||||||
|
|
||||||
GXX=${GXX:-g++}
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
for p in "${PACKAGES[@]}"; do
|
|
||||||
rlAssertRpm "$p"
|
|
||||||
done; unset p
|
|
||||||
rlLog "GXX = $GXX"
|
|
||||||
rlLog "Installed within `rpmquery -f $(which $GXX)`"
|
|
||||||
rlRun "TmpDir=\`mktemp -d\`"
|
|
||||||
rlRun "cp -v test.cpp $TmpDir"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest
|
|
||||||
rlRun "$GXX -W -Wall -o test.bin test.cpp &> output"
|
|
||||||
cat output
|
|
||||||
rlRun "grep -E 'warning:\W+unused\W+parameter' -q output" 1 "'warning: unused parameter' not present"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,2 +0,0 @@
|
|||||||
#include <sstream>
|
|
||||||
int main() {}
|
|
@ -1,45 +0,0 @@
|
|||||||
summary: Compile a Red Hat RPM package.
|
|
||||||
description: ''
|
|
||||||
contact: mcermak@redhat.com
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: bash ./runtest.sh
|
|
||||||
path: /tests/Sanity/compile-rpm
|
|
||||||
framework: beakerlib
|
|
||||||
require:
|
|
||||||
- autoconf
|
|
||||||
- bison
|
|
||||||
- dejagnu
|
|
||||||
- elfutils-libelf-devel
|
|
||||||
- expat-devel
|
|
||||||
- flex
|
|
||||||
- gcc
|
|
||||||
- gdb
|
|
||||||
- glibc-devel
|
|
||||||
- grep
|
|
||||||
- libselinux-devel
|
|
||||||
- make
|
|
||||||
- mpfr-devel
|
|
||||||
- ncurses-devel
|
|
||||||
- python-devel
|
|
||||||
- readline-devel
|
|
||||||
- rpm-build
|
|
||||||
- rpm-devel
|
|
||||||
- texinfo
|
|
||||||
- xz-devel
|
|
||||||
- yum-utils
|
|
||||||
- zlib-devel
|
|
||||||
duration: 240m
|
|
||||||
adjust:
|
|
||||||
- require+:
|
|
||||||
- ncurses-devel.i686
|
|
||||||
- ncurses-devel.x86_64
|
|
||||||
when: arch == x86_64
|
|
||||||
- enabled: false
|
|
||||||
# Too "heavy" for Fedora CI (for now)
|
|
||||||
when: distro == fedora and trigger is defined
|
|
||||||
continue: false
|
|
||||||
enabled: true
|
|
||||||
extra-nitrate: TC#0142522
|
|
||||||
extra-summary: /tools/gcc/Sanity/compile-rpm
|
|
||||||
extra-task: /tools/gcc/Sanity/compile-rpm
|
|
@ -1,99 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# runtest.sh of /tools/gcc/Sanity/compile-rpm
|
|
||||||
# Description: Compile a Red Hat RPM package.
|
|
||||||
# Author: Marek Polacek <polacek@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2012 Red Hat, Inc. All rights reserved.
|
|
||||||
#
|
|
||||||
# This copyrighted material is made available to anyone wishing
|
|
||||||
# to use, modify, copy, or redistribute it subject to the terms
|
|
||||||
# and conditions of the GNU General Public License version 2.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public
|
|
||||||
# License along with this program; if not, write to the Free
|
|
||||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
# Boston, MA 02110-1301, USA.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
# Include Beaker environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
GCC=${GCC:-gcc}
|
|
||||||
|
|
||||||
# Set the variabile UNDER_DTS on non-empty string, when run under devtoolset.
|
|
||||||
if $( echo `which gcc` | grep -qE '/opt/rh/' ); then
|
|
||||||
UNDER_DTS="true"
|
|
||||||
# Set the actual version of DTS
|
|
||||||
DTS=`which gcc | awk 'BEGIN { FS="/" } { print $4 }'`
|
|
||||||
fi
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
# Work around troubles with buildroot packages being out-of-sync
|
|
||||||
if rlIsRHEL; then
|
|
||||||
rlMountRedhat
|
|
||||||
for i in libipt source-highlight libbabeltrace; do
|
|
||||||
rpm -q $i &>/dev/null || rlRun "yum -y install $i" 0-255
|
|
||||||
rpm -q ${i}-devel &>/dev/null || rlRun "yum -y install ${i}-devel" 0-255
|
|
||||||
d=/mnt/redhat/brewroot/packages/$i
|
|
||||||
if rpm -q $i &>/dev/null && ! rpm -q ${i}-devel &>/dev/null; then
|
|
||||||
if [[ -e /mnt/redhat/brewroot/packages/$i ]]; then
|
|
||||||
d=/mnt/redhat/brewroot/packages/$i
|
|
||||||
else
|
|
||||||
d=/mnt/redhat/brewroot/packages/${i#lib}
|
|
||||||
fi
|
|
||||||
rlRun "yum -y install $d/$(rpm -q --qf='%{VERSION}/%{RELEASE}/%{ARCH}' $i)/${i}-devel-$(rpm -q --qf='%{VERSION}-%{RELEASE}.%{ARCH}' $i).rpm"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
rlRun "TmpDir=\$(mktemp -d)"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
|
|
||||||
if [ -z ${UNDER_DTS} ]; then
|
|
||||||
rlFetchSrcForInstalled gdb || yumdownloader --source gdb
|
|
||||||
else
|
|
||||||
rlFetchSrcForInstalled $DTS-gdb || yumdownloader --source $DTS-gdb
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z ${UNDER_DTS} ]; then
|
|
||||||
srpm=$(rpmquery gdb --queryformat=%{NAME}-%{VERSION}-%{RELEASE})".src.rpm"
|
|
||||||
else
|
|
||||||
srpm=$(rpmquery $DTS-gdb --queryformat=%{NAME}-%{VERSION}-%{RELEASE})".src.rpm"
|
|
||||||
fi
|
|
||||||
rlRun "rpm -Uvh $srpm"
|
|
||||||
spec_dir=$(rpm --eval=%_specdir)
|
|
||||||
build_dir=$(rpm --eval=%_builddir)
|
|
||||||
|
|
||||||
if [ -z ${UNDER_DTS} ]; then
|
|
||||||
pkg_dir=$(rpmquery gdb} --queryformat=%{NAME}-%{VERSION})
|
|
||||||
else
|
|
||||||
pkg_dir=$(rpmquery $DTS-gdb} --queryformat=%{NAME}-%{VERSION})
|
|
||||||
fi
|
|
||||||
|
|
||||||
yum-builddep -y $spec_dir/gdb.spec
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest
|
|
||||||
rlRun "CC=$GCC rpmbuild -bb $spec_dir/gdb.spec &> BUILD_LOG"
|
|
||||||
test $? -eq 0 || tail -n 20 BUILD_LOG
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlBundleLogs "Build-log" BUILD_LOG
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -r $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,34 +0,0 @@
|
|||||||
summary: Just runs prebuilt binaries
|
|
||||||
description: |
|
|
||||||
Just running prebuilt binaries that require libitm.
|
|
||||||
This test is designed to run in gcc-libraries CI. we
|
|
||||||
cannot build anything on our own, since we don't have
|
|
||||||
devtoolset's gcc and -devel libraries.
|
|
||||||
|
|
||||||
This should run OK on RHEL-6 and RHEL-7, currently all
|
|
||||||
arches.
|
|
||||||
|
|
||||||
The sources of the tests are in Sanity/libitm-sanity.
|
|
||||||
!!! THIS TEST IS INTENTIONALLY NOT IN gcc General PLAN !!!
|
|
||||||
contact: Michael Petlan <mpetlan@redhat.com>
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
- gcc-libraries
|
|
||||||
test: bash ./runtest.sh
|
|
||||||
framework: beakerlib
|
|
||||||
require:
|
|
||||||
- gcc
|
|
||||||
- libitm
|
|
||||||
recommend:
|
|
||||||
- gcc-libraries
|
|
||||||
duration: 5m
|
|
||||||
enabled: true
|
|
||||||
tag:
|
|
||||||
- CI-Tier-1
|
|
||||||
adjust:
|
|
||||||
- enabled: false
|
|
||||||
when: distro == rhel-6 and arch == s390x
|
|
||||||
continue: false
|
|
||||||
extra-nitrate: TC#0539542
|
|
||||||
extra-summary: /tools/gcc/Sanity/libitm-smoke
|
|
||||||
extra-task: /tools/gcc/Sanity/libitm-smoke
|
|
@ -1,75 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# runtest.sh of /tools/gcc/Sanity/libitm-smoke
|
|
||||||
# Description: Just runs prebuilt binaries
|
|
||||||
# Author: Michael Petlan <mpetlan@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2016 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# This program 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 2 of
|
|
||||||
# the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see http://www.gnu.org/licenses/.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
# Include Beaker environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
# Relevant for any system with libitm binary compatible with the attached
|
|
||||||
# binaries.
|
|
||||||
# Suggested TCMS relevancy:
|
|
||||||
# distro = rhel-6 && arch = s390x: False
|
|
||||||
|
|
||||||
PACKAGE="gcc"
|
|
||||||
REALLY_WANT_TO_RUN="true"
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
rlAssertRpm $PACKAGE
|
|
||||||
if [ "$BASEOS_CI" = "true" ]; then
|
|
||||||
# in CI, we need to be able to skip this testcase
|
|
||||||
# in case libitm is not a part of gcc-libraries
|
|
||||||
rlCheckRpm "libitm" || REALLY_WANT_TO_RUN="false"
|
|
||||||
else
|
|
||||||
rlCheckRpm "libitm" || rlRun "yum install -y libitm" 0 "Installing missing libitm"
|
|
||||||
rlAssertRpm "libitm"
|
|
||||||
fi
|
|
||||||
TARBALL="bins_`arch`.tar.gz"
|
|
||||||
if [ ! -f $TARBALL ]; then
|
|
||||||
rlDie "We do not have binaries for your arch (`arch`)"
|
|
||||||
fi
|
|
||||||
rlRun "zcat $TARBALL | tar x"
|
|
||||||
rlRun "pushd bins"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
if [ "$REALLY_WANT_TO_RUN" = "true" ]; then
|
|
||||||
rlPhaseStartTest
|
|
||||||
for i in T_*; do
|
|
||||||
rlRun "./$i"
|
|
||||||
done
|
|
||||||
rlPhaseEnd
|
|
||||||
else
|
|
||||||
rlPhaseStartTest
|
|
||||||
rlPass "SKIPPING THIS TEST -- libitm is probably not shipped within current gcc-libraries"
|
|
||||||
rlPhaseEnd
|
|
||||||
fi
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -rf bins" 0 "Removing the stuff we created"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,70 +0,0 @@
|
|||||||
summary: Rebuild binutils.
|
|
||||||
description: ''
|
|
||||||
contact: mcermak@redhat.com
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: bash ./runtest.sh
|
|
||||||
path: /tests/Sanity/rebuild-binutils
|
|
||||||
framework: beakerlib
|
|
||||||
require:
|
|
||||||
- autoconf
|
|
||||||
- automake
|
|
||||||
- binutils
|
|
||||||
- gcc
|
|
||||||
- glibc
|
|
||||||
- glibc-devel
|
|
||||||
- glibc-static
|
|
||||||
- libstdc++
|
|
||||||
- libstdc++-devel
|
|
||||||
- libstdc++-static
|
|
||||||
- perl
|
|
||||||
- rpm-build
|
|
||||||
- sharutils
|
|
||||||
- texinfo
|
|
||||||
- yum-utils
|
|
||||||
- zlib-devel
|
|
||||||
- zlib-static
|
|
||||||
recommend:
|
|
||||||
- glibc-devel.ppc
|
|
||||||
- glibc-devel.s390
|
|
||||||
- glibc-static.ppc
|
|
||||||
- glibc-static.s390
|
|
||||||
- libgcc.ppc
|
|
||||||
- libgcc.s390
|
|
||||||
- libstdc++-devel.ppc
|
|
||||||
- libstdc++-devel.s390
|
|
||||||
- libstdc++.ppc
|
|
||||||
- libstdc++.s390
|
|
||||||
- libstdc++-static.ppc
|
|
||||||
- libstdc++-static.s390
|
|
||||||
- zlib-devel.ppc
|
|
||||||
- zlib-static.ppc
|
|
||||||
- dnf-utils
|
|
||||||
- yum-utils
|
|
||||||
duration: 3h
|
|
||||||
enabled: true
|
|
||||||
adjust:
|
|
||||||
- require+:
|
|
||||||
- glibc-devel.i686
|
|
||||||
- glibc-devel.x86_64
|
|
||||||
- glibc-static.i686
|
|
||||||
- glibc-static.x86_64
|
|
||||||
- libgcc.i686
|
|
||||||
- libgcc.x86_64
|
|
||||||
- libstdc++-devel.i686
|
|
||||||
- libstdc++-devel.x86_64
|
|
||||||
- libstdc++.i686
|
|
||||||
- libstdc++.x86_64
|
|
||||||
- libstdc++-static.i686
|
|
||||||
- libstdc++-static.x86_64
|
|
||||||
when: arch == x86_64
|
|
||||||
- enabled: false
|
|
||||||
when: distro == rhel-6 and collection is defined
|
|
||||||
continue: false
|
|
||||||
- enabled: false
|
|
||||||
# Too "heavy" for Fedora CI (for now)
|
|
||||||
when: distro == fedora and trigger is defined
|
|
||||||
continue: false
|
|
||||||
extra-nitrate: TC#0147459
|
|
||||||
extra-summary: /tools/gcc/Sanity/rebuild-binutils
|
|
||||||
extra-task: /tools/gcc/Sanity/rebuild-binutils
|
|
@ -1,89 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# runtest.sh of /tools/gcc/Sanity/rebuild-binutils
|
|
||||||
# Description: Rebuild binutils.
|
|
||||||
# Author: Marek Polacek <polacek@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2012 Red Hat, Inc. All rights reserved.
|
|
||||||
#
|
|
||||||
# This copyrighted material is made available to anyone wishing
|
|
||||||
# to use, modify, copy, or redistribute it subject to the terms
|
|
||||||
# and conditions of the GNU General Public License version 2.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public
|
|
||||||
# License along with this program; if not, write to the Free
|
|
||||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
# Boston, MA 02110-1301, USA.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
# Include Beaker environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
# The test is expected to fail in devtoolset-* on RHEL-6 because of
|
|
||||||
# the "Unresolvable `R_X86_64_NONE` relocation" family of bugs, e.g.
|
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1545386
|
|
||||||
# They have been fixed for both the base and devtoolset binutils
|
|
||||||
# on RHEL-7 but on RHEL-6, it was just the base binutils.
|
|
||||||
|
|
||||||
GCC=${GCC:-gcc}
|
|
||||||
|
|
||||||
# Set the variabile UNDER_DTS on non-empty string, when run under devtoolset.
|
|
||||||
if $( echo `which gcc` | grep -qE '/opt/rh/' ); then
|
|
||||||
UNDER_DTS="true"
|
|
||||||
# Set the actual version of DTS
|
|
||||||
DTS=`which gcc | awk 'BEGIN { FS="/" } { print $4 }'`
|
|
||||||
fi
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
rlLog "Using GCC: `rpmquery -f $(which $GCC)`"
|
|
||||||
rlRun "rpmquery -a | grep -e yum-utils -e dnf-utils" 0 "YUM or DNF utils are installed"
|
|
||||||
rlRun "TmpDir=\$(mktemp -d)"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
|
|
||||||
if [ -z ${UNDER_DTS} ]; then
|
|
||||||
rlFetchSrcForInstalled binutils || yumdownloader --source binutils
|
|
||||||
srpm=$(find binutils*.src.rpm | tail -n1)
|
|
||||||
else
|
|
||||||
rlFetchSrcForInstalled $DTS-binutils || yumdownloader --source $DTS-binutils
|
|
||||||
srpm=$(find $DTS-binutils*.src.rpm | tail -n1)
|
|
||||||
fi
|
|
||||||
rlRun "rpm -Uvh $srpm"
|
|
||||||
spec_dir=$(rpm --eval=%_specdir)
|
|
||||||
yum-builddep -y $spec_dir/binutils.spec
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest
|
|
||||||
if [ "$(uname -i)" == "ppc64" ]; then
|
|
||||||
if rlIsRHEL 6; then
|
|
||||||
target='--target=ppc64'
|
|
||||||
else
|
|
||||||
target='--target=ppc'
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ "$(uname -i)" == "i386" ]; then
|
|
||||||
target='--target=i686'
|
|
||||||
fi
|
|
||||||
|
|
||||||
rlRun "setsebool allow_execmod 1"
|
|
||||||
rlRun "CC=$GCC rpmbuild -bb $target --clean $spec_dir/binutils.spec &> BUILD_LOG" || ( echo "========== BUILD_LOG tail ==========" ; tail -n 20 BUILD_LOG )
|
|
||||||
rlRun "setsebool allow_execmod 0"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlBundleLogs "Build-log" BUILD_LOG
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -r $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,84 +0,0 @@
|
|||||||
description: |
|
|
||||||
Rebuild current glibc.
|
|
||||||
summary: Rebuild glibc
|
|
||||||
contact: mcermak@redhat.com
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: bash ./runtest.sh
|
|
||||||
path: /tests/Sanity/rebuild-glibc
|
|
||||||
framework: beakerlib
|
|
||||||
require:
|
|
||||||
- audit-libs-devel
|
|
||||||
- binutils
|
|
||||||
- bison
|
|
||||||
- gcc
|
|
||||||
- gcc-c++
|
|
||||||
- gd-devel
|
|
||||||
- glibc-devel
|
|
||||||
- glibc-static
|
|
||||||
- glibc-utils
|
|
||||||
- libcap-devel
|
|
||||||
- libgcc
|
|
||||||
- libpng-devel
|
|
||||||
- libstdc++
|
|
||||||
- libstdc++-devel
|
|
||||||
- libstdc++-static
|
|
||||||
- libXpm-devel
|
|
||||||
- nspr-devel
|
|
||||||
- nss-devel
|
|
||||||
- nss-softokn-devel
|
|
||||||
- nss-util-devel
|
|
||||||
- python3-devel
|
|
||||||
- rpm-build
|
|
||||||
- systemtap-sdt-devel
|
|
||||||
- texinfo
|
|
||||||
- valgrind
|
|
||||||
- yum-utils
|
|
||||||
recommend:
|
|
||||||
- glibc-devel.ppc
|
|
||||||
- glibc-devel.s390
|
|
||||||
- glibc-static.ppc
|
|
||||||
- glibc-static.s390
|
|
||||||
- libgcc.ppc
|
|
||||||
- libgcc.s390
|
|
||||||
- libstdc++-devel.ppc
|
|
||||||
- libstdc++-devel.s390
|
|
||||||
- libstdc++.ppc
|
|
||||||
- libstdc++.s390
|
|
||||||
- libstdc++-static.ppc
|
|
||||||
- libstdc++-static.s390
|
|
||||||
- dnf-utils
|
|
||||||
- yum-utils
|
|
||||||
duration: 18h
|
|
||||||
enabled: true
|
|
||||||
tag:
|
|
||||||
- NoDTS
|
|
||||||
- rhel8-buildroot
|
|
||||||
adjust:
|
|
||||||
- require+:
|
|
||||||
- glibc-devel.i686
|
|
||||||
- glibc-devel.x86_64
|
|
||||||
- glibc-static.i686
|
|
||||||
- glibc-static.x86_64
|
|
||||||
- libgcc.i686
|
|
||||||
- libgcc.x86_64
|
|
||||||
- libstdc++-devel.i686
|
|
||||||
- libstdc++-devel.x86_64
|
|
||||||
- libstdc++.i686
|
|
||||||
- libstdc++.x86_64
|
|
||||||
- libstdc++-static.i686
|
|
||||||
- libstdc++-static.x86_64
|
|
||||||
when: arch == x86_64
|
|
||||||
- require-:
|
|
||||||
- python3-devel
|
|
||||||
when: distro < rhel-8
|
|
||||||
- enabled: false
|
|
||||||
when: collection is defined
|
|
||||||
continue: false
|
|
||||||
- enabled: false
|
|
||||||
# Too "heavy" for Fedora CI (for now)
|
|
||||||
when: distro == fedora and trigger is defined
|
|
||||||
continue: false
|
|
||||||
extra-nitrate: TC#0035677
|
|
||||||
extra-summary: /tools/gcc/Sanity/rebuild-glibc
|
|
||||||
extra-task: /tools/gcc/Sanity/rebuild-glibc
|
|
@ -1,79 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Copyright (c) 2009, 2012 Red Hat, Inc. All rights reserved.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
# Author: Michal Nowak <mnowak@redhat.com>
|
|
||||||
# Rewrite: Marek Polacek <polacek@redhat.com>
|
|
||||||
|
|
||||||
# Include Beaker environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
cpu_good_for_make_check () {
|
|
||||||
# glibc can create several alternative CPU-specific bits that are selected
|
|
||||||
# in runtime. However the "make check" phase tries to test all of them and
|
|
||||||
# fails when testing a more "advanced" binary than the SUT's CPU. In such
|
|
||||||
# case we'd want to skip "make check" to prevent "rpmbuild" from a certain
|
|
||||||
# failure.
|
|
||||||
if rlIsRHEL '>=8' && [[ $(arch) = ppc64le ]] && grep -q 'POWER[2-8]' /proc/cpuinfo; then
|
|
||||||
rlLogInfo 'RHEL8+ on <POWER9, make check will be skipped'
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
GCC=${GCC:-gcc}
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
|
|
||||||
cpu_good_for_make_check && CHECK_PARAM='' || CHECK_PARAM='--nocheck'
|
|
||||||
|
|
||||||
rlRun "rpmquery -a | grep -e yum-utils -e dnf-utils" 0 "YUM or DNF utils are installed"
|
|
||||||
|
|
||||||
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
|
|
||||||
rlLogInfo "Running kernel: `uname -r`"
|
|
||||||
rlLogInfo "Installed kernel(s): `rpm -q kernel`"
|
|
||||||
rlLogInfo "Installed headers: `rpm -q kernel-headers`"
|
|
||||||
|
|
||||||
rlFetchSrcForInstalled glibc || yumdownloader --source glibc
|
|
||||||
srpm=$(find glibc*.src.rpm | tail -n1)
|
|
||||||
rlRun "rpm -Uvh $srpm"
|
|
||||||
spec_dir=$(rpm --eval=%_specdir)
|
|
||||||
yum-builddep -y $spec_dir/glibc.spec
|
|
||||||
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest
|
|
||||||
if [ "$(uname -i)" == "ppc64" ]; then
|
|
||||||
if rlIsRHEL 7 || rlIsRHEL 6; then
|
|
||||||
target='--target=ppc64'
|
|
||||||
else
|
|
||||||
target='--target=ppc'
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
rlRun "CC=$GCC rpmbuild -bb $target $CHECK_PARAM --clean $spec_dir/glibc.spec &> BUILD_LOG"
|
|
||||||
test $? -eq 0 || tail -n 20 BUILD_LOG
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlBundleLogs "Build-log" BUILD_LOG
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -r $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,7 +0,0 @@
|
|||||||
int
|
|
||||||
main (void)
|
|
||||||
{
|
|
||||||
char *mem = __builtin_alloca (40);
|
|
||||||
__builtin___clear_cache (mem, mem + 40);
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,78 +0,0 @@
|
|||||||
template <class T>
|
|
||||||
class X
|
|
||||||
{
|
|
||||||
T p;
|
|
||||||
public:
|
|
||||||
template <class U> auto f() -> decltype(+p) { return p; }
|
|
||||||
};
|
|
||||||
|
|
||||||
struct A
|
|
||||||
{
|
|
||||||
int i = 42;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct B
|
|
||||||
{
|
|
||||||
int i = 42;
|
|
||||||
B() { }
|
|
||||||
B(int i): i(i) { }
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T, T t>
|
|
||||||
struct C
|
|
||||||
{
|
|
||||||
T m = t;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T, T t>
|
|
||||||
struct D
|
|
||||||
{
|
|
||||||
T m = t;
|
|
||||||
D() { }
|
|
||||||
D(T m):m(m) { }
|
|
||||||
};
|
|
||||||
|
|
||||||
struct complex
|
|
||||||
{
|
|
||||||
typedef float value_type;
|
|
||||||
typedef __complex__ float _ComplexT;
|
|
||||||
|
|
||||||
constexpr complex(_ComplexT __z) : _M_value(__z) { }
|
|
||||||
|
|
||||||
constexpr complex(float __r = 0.0f, float __i = 0.0f)
|
|
||||||
: _M_value(__r + __i * 1.0f) { }
|
|
||||||
|
|
||||||
private:
|
|
||||||
_ComplexT _M_value;
|
|
||||||
};
|
|
||||||
|
|
||||||
constexpr complex c1;
|
|
||||||
|
|
||||||
int
|
|
||||||
main (void)
|
|
||||||
{
|
|
||||||
X<int>().f<int>();
|
|
||||||
A a1;
|
|
||||||
if (a1.i != 42) return 1;
|
|
||||||
A a2{};
|
|
||||||
if (a2.i != 42) return 2;
|
|
||||||
A a3[1];
|
|
||||||
if (a3[0].i != 42) return 3;
|
|
||||||
|
|
||||||
B b1;
|
|
||||||
if (b1.i != 42) return 3;
|
|
||||||
B b2 (24);
|
|
||||||
if (b2.i != 24) return 4;
|
|
||||||
|
|
||||||
C<int,3> c1;
|
|
||||||
if (c1.m != 3) return 5;
|
|
||||||
C<int,5> c2 {};
|
|
||||||
if (c2.m != 5) return 6;
|
|
||||||
|
|
||||||
D<int,3> d1;
|
|
||||||
if (d1.m != 3) return 7;
|
|
||||||
D<int,3> d2 (5) ;
|
|
||||||
if (d2.m != 5) return 8;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
main (void)
|
|
||||||
{
|
|
||||||
puts ("Hello World!");
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
#include <iostream>
|
|
||||||
|
|
||||||
int
|
|
||||||
main (void)
|
|
||||||
{
|
|
||||||
std::cout << "Hello, world!\n";
|
|
||||||
}
|
|
@ -1,3 +0,0 @@
|
|||||||
program hello
|
|
||||||
print *, "Hello World!"
|
|
||||||
end program hello
|
|
@ -1,41 +0,0 @@
|
|||||||
// { dg-options -std=c++0x }
|
|
||||||
// { dg-do run }
|
|
||||||
|
|
||||||
extern "C" void abort();
|
|
||||||
|
|
||||||
template <class T>
|
|
||||||
auto apply (T t) -> decltype (t())
|
|
||||||
{
|
|
||||||
return t();
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T>
|
|
||||||
void f(T t)
|
|
||||||
{
|
|
||||||
T t2 = t;
|
|
||||||
if (t != [=]()->T { return t; }())
|
|
||||||
abort ();
|
|
||||||
if (t != [=] { return t; }())
|
|
||||||
abort ();
|
|
||||||
if (t != [=] { return t2; }())
|
|
||||||
abort ();
|
|
||||||
if (t != [&] { return t; }())
|
|
||||||
abort ();
|
|
||||||
if (t != apply([=]{return t;}))
|
|
||||||
abort ();
|
|
||||||
|
|
||||||
int i;
|
|
||||||
[&] (int a) { return a+i+t; } (0);
|
|
||||||
[&] (int a) -> decltype(a) { return a+i+t; } (0);
|
|
||||||
[&] (int a) -> decltype(i) { return a+i+t; } (0);
|
|
||||||
[&] (int a) -> decltype(t) { return a+i+t; } (0);
|
|
||||||
[&] (int a) -> decltype(a+i) { return a+i+t; } (0);
|
|
||||||
[&] (int a) -> decltype(a+t) { return a+i+t; } (0);
|
|
||||||
[&] (int a) -> decltype(i+t) { return a+i+t; } (0);
|
|
||||||
[&] (int a) -> decltype(a+i+t) { return a+i+t; } (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
f(0xbeef);
|
|
||||||
}
|
|
@ -1,58 +0,0 @@
|
|||||||
summary: Try -m32 and -m64 options.
|
|
||||||
description: Try -m32 and -m64 options
|
|
||||||
contact: mcermak@redhat.com
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: bash ./runtest.sh
|
|
||||||
path: /tests/Sanity/test-m32-m64-options
|
|
||||||
framework: beakerlib
|
|
||||||
require:
|
|
||||||
- gcc
|
|
||||||
- gcc-c++
|
|
||||||
- gcc-gfortran
|
|
||||||
- glibc-devel
|
|
||||||
- libgfortran
|
|
||||||
- libgomp
|
|
||||||
- libstdc++-devel
|
|
||||||
- libitm
|
|
||||||
recommend:
|
|
||||||
- libgfortran5
|
|
||||||
- libitm-devel
|
|
||||||
- libquadmath-devel
|
|
||||||
duration: 20m
|
|
||||||
enabled: true
|
|
||||||
link:
|
|
||||||
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1113429
|
|
||||||
adjust:
|
|
||||||
- enabled: false
|
|
||||||
when: arch == ia64, ppc64, s390, s390x
|
|
||||||
continue: false
|
|
||||||
- enabled: false
|
|
||||||
when: arch == aarch64
|
|
||||||
continue: false
|
|
||||||
because: no -m64 nor -m32 there
|
|
||||||
- require+:
|
|
||||||
- glibc-devel.x86_64
|
|
||||||
- glibc-devel.i686
|
|
||||||
- libgfortran.x86_64
|
|
||||||
- libgfortran.i686
|
|
||||||
- libstdc++-devel.x86_64
|
|
||||||
- libstdc++-devel.i686
|
|
||||||
- libitm.x86_64
|
|
||||||
- libitm.i686
|
|
||||||
- libgomp.x86_64
|
|
||||||
- libgomp.i686
|
|
||||||
- libquadmath.x86_64
|
|
||||||
- libquadmath.i686
|
|
||||||
when: arch == x86_64
|
|
||||||
- recommend+:
|
|
||||||
- libgfortran5.x86_64
|
|
||||||
- libgfortran5.i686
|
|
||||||
- libitm-devel.x86_64
|
|
||||||
- libitm-devel.i686
|
|
||||||
- libquadmath-devel.x86_64
|
|
||||||
- libquadmath-devel.i686
|
|
||||||
when: arch == x86_64
|
|
||||||
extra-nitrate: TC#0197178
|
|
||||||
extra-summary: /tools/gcc/Sanity/test-m32-m64-options
|
|
||||||
extra-task: /tools/gcc/Sanity/test-m32-m64-options
|
|
@ -1,24 +0,0 @@
|
|||||||
#include <omp.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
main (void)
|
|
||||||
{
|
|
||||||
int th_id;
|
|
||||||
int nthreads;
|
|
||||||
|
|
||||||
#pragma omp parallel private(th_id)
|
|
||||||
{
|
|
||||||
th_id = omp_get_thread_num ();
|
|
||||||
printf ("Hello World from thread %d\n", th_id);
|
|
||||||
|
|
||||||
#pragma omp barrier
|
|
||||||
if (th_id == 0)
|
|
||||||
{
|
|
||||||
nthreads = omp_get_num_threads ();
|
|
||||||
printf ("There are %d threads\n", nthreads);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return EXIT_SUCCESS;
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
#include <quadmath.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
main (void)
|
|
||||||
{
|
|
||||||
__float128 r = strtoflt128 ("1.23456789", NULL);
|
|
||||||
|
|
||||||
int prec = 20;
|
|
||||||
int width = 46;
|
|
||||||
char buf[128];
|
|
||||||
|
|
||||||
r = 2.0q;
|
|
||||||
r = sqrtq (r);
|
|
||||||
int n = quadmath_snprintf (buf, sizeof buf, "%+-#*.20Qe", width, r);
|
|
||||||
if ((size_t) n < sizeof buf)
|
|
||||||
/* Prints: +1.41421356237309504880e+00. */
|
|
||||||
printf ("%s\n", buf);
|
|
||||||
quadmath_snprintf (buf, sizeof buf, "%Qa", r);
|
|
||||||
if ((size_t) n < sizeof buf)
|
|
||||||
/* Prints: 0x1.6a09e667f3bcc908b2fb1366ea96p+0. */
|
|
||||||
printf ("%s\n", buf);
|
|
||||||
n = quadmath_snprintf (NULL, 0, "%+-#46.*Qe", prec, r);
|
|
||||||
if (n > -1)
|
|
||||||
{
|
|
||||||
char *str = malloc (n + 1);
|
|
||||||
if (str)
|
|
||||||
{
|
|
||||||
quadmath_snprintf (str, n + 1, "%+-#46.*Qe", prec, r);
|
|
||||||
/* Prints: +1.41421356237309504880e+00. */
|
|
||||||
printf ("%s\n", str);
|
|
||||||
}
|
|
||||||
free (str);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,167 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# runtest.sh of /tools/gcc/Sanity/test-m32-m64-options
|
|
||||||
# Description: Try -m32 and -m64 options.
|
|
||||||
# Author: Marek Polacek <polacek@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2012 Red Hat, Inc. All rights reserved.
|
|
||||||
#
|
|
||||||
# This copyrighted material is made available to anyone wishing
|
|
||||||
# to use, modify, copy, or redistribute it subject to the terms
|
|
||||||
# and conditions of the GNU General Public License version 2.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public
|
|
||||||
# License along with this program; if not, write to the Free
|
|
||||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
# Boston, MA 02110-1301, USA.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
# In this test, we try to compile and run programs using -m32 and -m64.
|
|
||||||
# We compile C, C++ and Fortran Hello World programs. Also, there are two
|
|
||||||
# proglets which are exercising some C++11 features. Furthermore, we try
|
|
||||||
# -fgnu-tm, -fopenmp options. We also use libquadmath a little bit.
|
|
||||||
# We call a function from libgcc. We also use the __thread keyword.
|
|
||||||
|
|
||||||
# Include Beaker environment
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
GCC=${GCC:-$(type -P gcc)}
|
|
||||||
GCC_RPM_NAME=$(rpm --qf '%{name}' -qf $GCC)
|
|
||||||
|
|
||||||
[[ "$GCC_RPM_NAME" == *toolset* ]] && TOOLSET=${GCC_RPM_NAME%-gcc} || TOOLSET=''
|
|
||||||
|
|
||||||
if [ -n "`rlGetPrimaryArch`" ]; then
|
|
||||||
PRI_ARCH=$(rlGetPrimaryArch)
|
|
||||||
else
|
|
||||||
PRI_ARCH="$(uname -i)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# State applicable -m<bits> switches
|
|
||||||
SWITCHES='-m64 -m32'
|
|
||||||
case "$PRI_ARCH" in
|
|
||||||
i686)
|
|
||||||
SWITCHES=-m32 # just base RHEL-6/i386
|
|
||||||
;;
|
|
||||||
ppc64le) # we never had 32 support there
|
|
||||||
SWITCHES=-m64
|
|
||||||
;;
|
|
||||||
aarch64)
|
|
||||||
# Not only we never had 32-bit support there, GCC on this architecture
|
|
||||||
# doesn't accept the -m64 switch either. This test isn't applicable
|
|
||||||
# at all and should be excluded by its relevancy, e.g. in TCMS:
|
|
||||||
# arch = aarch64: False
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
ppc64|s390x) # 32-bit support present only in system GCC of RHEL <8
|
|
||||||
if [[ -z "$TOOLSET" ]] && rlIsRHEL '<8'; then
|
|
||||||
if [[ "$PRI_ARCH" != s390x ]]; then
|
|
||||||
SWITCHES='-m64 -m32'
|
|
||||||
else
|
|
||||||
SWITCHES='-m64 -m31'
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
SWITCHES=-m64
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
rlLogInfo "COLLECTIONS=$COLLECTIONS"
|
|
||||||
rlLogInfo "GCC=$GCC"
|
|
||||||
rlLogInfo "SKIP_COLLECTION_METAPACKAGE_CHECK=$SKIP_COLLECTION_METAPACKAGE_CHECK"
|
|
||||||
|
|
||||||
# We optionally need to skip checking for the presence of the metapackage
|
|
||||||
# because that would pull in all the dependent toolset subrpms. We do not
|
|
||||||
# always want that, especially in CI.
|
|
||||||
_COLLECTIONS="$COLLECTIONS"
|
|
||||||
if ! test -z $SKIP_COLLECTION_METAPACKAGE_CHECK; then
|
|
||||||
for c in $SKIP_COLLECTION_METAPACKAGE_CHECK; do
|
|
||||||
rlLogInfo "ignoring metapackage check for collection $c"
|
|
||||||
export COLLECTIONS=$(shopt -s extglob && echo ${COLLECTIONS//$c/})
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
rlLogInfo "(without skipped) COLLECTIONS=$COLLECTIONS"
|
|
||||||
export COLLECTIONS="$_COLLECTIONS"
|
|
||||||
|
|
||||||
rlRun "TmpDir=\$(mktemp -d)"
|
|
||||||
rlRun "cp -v hello.{c,cpp,f90} tm.c quad.c thr-init-2.c clear_cache.c omphello.c lambda-template.C cpp11.cpp $TmpDir"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartSetup "Showing compiler versions"
|
|
||||||
for compiler in gcc g++ gfortran; do
|
|
||||||
rlLogInfo "Version of compiler: $compiler"
|
|
||||||
eval "$compiler --version 2>&1" | while read line; do
|
|
||||||
rlLogInfo " $line"
|
|
||||||
done
|
|
||||||
done
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
for m in $SWITCHES; do
|
|
||||||
rlPhaseStartTest "Compile and run [$m]"
|
|
||||||
|
|
||||||
# Test C
|
|
||||||
rlRun "gcc $m hello.c -o hello_c"
|
|
||||||
rlRun ./hello_c
|
|
||||||
|
|
||||||
# Test C++
|
|
||||||
rlRun "g++ $m hello.cpp -o hello_cpp"
|
|
||||||
rlRun ./hello_cpp
|
|
||||||
|
|
||||||
# C++11 features. Not available in system GCC of RHEL-6
|
|
||||||
if ! rlIsRHEL 6 || [[ -n "$TOOLSET" ]]; then
|
|
||||||
rlRun "g++ $m -std=c++11 lambda-template.C -o lambda"
|
|
||||||
rlRun ./lambda
|
|
||||||
|
|
||||||
rlRun "g++ $m -std=c++11 cpp11.cpp -o cpp11"
|
|
||||||
rlRun ./cpp11
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Test Fortran
|
|
||||||
rlRun "gfortran $m hello.f90 -o hello_fortran"
|
|
||||||
rlRun "./hello_fortran"
|
|
||||||
|
|
||||||
# Test TM. Not available in system GCC of RHEL-6
|
|
||||||
if ! rlIsRHEL 6 || [[ -n "$TOOLSET" ]]; then
|
|
||||||
rlRun "gcc $m -O2 -std=gnu99 -fgnu-tm tm.c -o tm"
|
|
||||||
rlRun ./tm
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Test OpenMP
|
|
||||||
rlRun "gcc $m omphello.c -O2 -std=gnu99 -fopenmp -o omp"
|
|
||||||
rlRun ./omp
|
|
||||||
|
|
||||||
# Test __thread
|
|
||||||
rlRun "gcc $m thr-init-2.c -O2 -std=gnu99 -ftls-model=initial-exec -o thr"
|
|
||||||
rlRun ./thr
|
|
||||||
|
|
||||||
# Now test some libquadmath stuff (__float128 support).
|
|
||||||
if rpm -q ${GCC_RPM_NAME%%gcc}libquadmath-devel &>/dev/null; then
|
|
||||||
rlRun "gcc $m quad.c -O2 -std=gnu99 -lquadmath -o quad -lm"
|
|
||||||
rlRun ./quad
|
|
||||||
fi
|
|
||||||
|
|
||||||
# And now something from libgcc, e.g. __builtin___clear_cache.
|
|
||||||
rlRun "gcc $m clear_cache.c -O2 -std=gnu99 -o cache"
|
|
||||||
rlRun ./cache
|
|
||||||
|
|
||||||
rlPhaseEnd
|
|
||||||
done
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun popd
|
|
||||||
rlRun "rm -r $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,20 +0,0 @@
|
|||||||
extern void abort() ;
|
|
||||||
|
|
||||||
static __thread int fstat ;
|
|
||||||
static __thread int fstat = 1;
|
|
||||||
|
|
||||||
int test_code(int b)
|
|
||||||
{
|
|
||||||
fstat += b ;
|
|
||||||
return fstat;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main (int ac, char *av[])
|
|
||||||
{
|
|
||||||
int a = test_code(1);
|
|
||||||
|
|
||||||
if ((a != 2) || (fstat != 2))
|
|
||||||
abort () ;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
extern void *malloc (__SIZE_TYPE__) __attribute__((malloc,transaction_safe));
|
|
||||||
|
|
||||||
static int __attribute__((transaction_safe))
|
|
||||||
something (void)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct large { int foo[500]; };
|
|
||||||
|
|
||||||
int
|
|
||||||
main (void)
|
|
||||||
{
|
|
||||||
int *p;
|
|
||||||
struct large *lp;
|
|
||||||
|
|
||||||
__transaction_atomic {
|
|
||||||
p = malloc (sizeof (*p) * 100);
|
|
||||||
lp = malloc (sizeof (*lp) * 100);
|
|
||||||
|
|
||||||
/* No instrumentation necessary; P and LP are transaction local. */
|
|
||||||
p[5] = 123;
|
|
||||||
lp->foo[66] = 123;
|
|
||||||
|
|
||||||
if (something ())
|
|
||||||
__transaction_cancel;
|
|
||||||
}
|
|
||||||
|
|
||||||
__transaction_relaxed {
|
|
||||||
++p[5];
|
|
||||||
}
|
|
||||||
|
|
||||||
return ((p[5] == 124) ? 0 : 1);
|
|
||||||
}
|
|
@ -1,5 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
void hello() {
|
|
||||||
printf("Hello World\n");
|
|
||||||
}
|
|
@ -1,5 +0,0 @@
|
|||||||
#include <iostream>
|
|
||||||
|
|
||||||
void hello() {
|
|
||||||
std::cout << "Hello World\n";
|
|
||||||
}
|
|
@ -1,6 +0,0 @@
|
|||||||
void hello();
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
hello();
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,6 +0,0 @@
|
|||||||
void hello();
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
hello();
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
summary: Test compiling with the Fedora C/CXX flags.
|
|
||||||
description: ''
|
|
||||||
component:
|
|
||||||
- gcc
|
|
||||||
test: ./runtest.sh
|
|
||||||
require:
|
|
||||||
- annobin-annocheck
|
|
||||||
- gcc
|
|
||||||
- gcc-c++
|
|
||||||
- redhat-rpm-config
|
|
@ -1,29 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
default_cflags=$(rpm -E '%{build_cflags}')
|
|
||||||
default_cxxflags=$(rpm -E '%{build_cxxflags}')
|
|
||||||
default_ldflags=$(rpm -E '%{build_ldflags}')
|
|
||||||
|
|
||||||
cflags=$(rpm -D '%toolchain gcc' -E '%{build_cflags}')
|
|
||||||
cxxflags=$(rpm -D '%toolchain gcc' -E '%{build_cxxflags}')
|
|
||||||
ldflags=$(rpm -D '%toolchain gcc' -E '%{build_ldflags}')
|
|
||||||
|
|
||||||
test "$default_cflags" = "$cflags"
|
|
||||||
test "$default_cxxflags" = "$cxxflags"
|
|
||||||
test "$default_ldflags" = "$ldflags"
|
|
||||||
|
|
||||||
gcc $cflags -o hello.o -c hello.c
|
|
||||||
annocheck hello.o
|
|
||||||
gcc $cflags -o main.o -c main.c
|
|
||||||
gcc $ldflags -o hello main.o hello.o
|
|
||||||
annocheck hello
|
|
||||||
./hello | grep "Hello World"
|
|
||||||
|
|
||||||
g++ $cxxflags -o hello-cpp.o -c hello.cpp
|
|
||||||
annocheck hello-cpp.o
|
|
||||||
g++ $cxxflags -o main-cpp.o -c main.cpp
|
|
||||||
g++ $ldflags -o hello-cpp main-cpp.o hello-cpp.o
|
|
||||||
annocheck hello-cpp
|
|
||||||
./hello-cpp | grep "Hello World"
|
|
@ -1,65 +0,0 @@
|
|||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Makefile of /tools/gcc/Sanity/smoke-test
|
|
||||||
# Description: Basic smoke test.
|
|
||||||
# Author: Marek Polacek <polacek@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2012 Red Hat, Inc. All rights reserved.
|
|
||||||
#
|
|
||||||
# This copyrighted material is made available to anyone wishing
|
|
||||||
# to use, modify, copy, or redistribute it subject to the terms
|
|
||||||
# and conditions of the GNU General Public License version 2.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public
|
|
||||||
# License along with this program; if not, write to the Free
|
|
||||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
# Boston, MA 02110-1301, USA.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
export TEST=/tools/gcc/Sanity/smoke-test
|
|
||||||
export TESTVERSION=1.0
|
|
||||||
|
|
||||||
BUILT_FILES=
|
|
||||||
|
|
||||||
FILES=$(METADATA) runtest.sh Makefile PURPOSE hello.c hello.f90 hello.cpp tm.c quad.c omphello.c thr-init-2.c clear_cache.c
|
|
||||||
|
|
||||||
.PHONY: all install download clean
|
|
||||||
|
|
||||||
run: $(FILES) build
|
|
||||||
./runtest.sh
|
|
||||||
|
|
||||||
build: $(BUILT_FILES)
|
|
||||||
test -x runtest.sh || chmod a+x runtest.sh
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f *~ $(BUILT_FILES)
|
|
||||||
|
|
||||||
|
|
||||||
include /usr/share/rhts/lib/rhts-make.include
|
|
||||||
|
|
||||||
$(METADATA): Makefile
|
|
||||||
@echo "Owner: Marek Polacek <mpolacek@redhat.com>" > $(METADATA)
|
|
||||||
@echo "Name: $(TEST)" >> $(METADATA)
|
|
||||||
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
|
||||||
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
|
||||||
@echo "Description: Basic smoke test." >> $(METADATA)
|
|
||||||
@echo "Type: Sanity" >> $(METADATA)
|
|
||||||
@echo "TestTime: 10m" >> $(METADATA)
|
|
||||||
@echo "RunFor: gcc" >> $(METADATA)
|
|
||||||
@echo "RunFor: devtoolset-1.0-gcc" >> $(METADATA)
|
|
||||||
@echo "Requires: gcc gcc-c++ gcc-gfortran glibc-common glibc-devel" >> $(METADATA)
|
|
||||||
@echo "Requires: libquadmath libquadmath-devel libgomp libgcc libstdc++-devel" >> $(METADATA)
|
|
||||||
@echo "Priority: Normal" >> $(METADATA)
|
|
||||||
@echo "License: GPLv2" >> $(METADATA)
|
|
||||||
@echo "Confidential: no" >> $(METADATA)
|
|
||||||
@echo "Destructive: no" >> $(METADATA)
|
|
||||||
|
|
||||||
rhts-lint $(METADATA)
|
|
@ -1,3 +0,0 @@
|
|||||||
PURPOSE of /tools/gcc/Sanity/smoke-test
|
|
||||||
Description: Basic smoke test.
|
|
||||||
Author: Marek Polacek <polacek@redhat.com>
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user