Merge remote-tracking branch 'up/main' into main-riscv64

Signed-off-by: David Abdurachmanov <davidlt@rivosinc.com>
This commit is contained in:
David Abdurachmanov 2023-12-17 16:44:34 +02:00
commit 910e36f48c
Signed by: davidlt
GPG Key ID: 7A5F42FAF91FACC3
111 changed files with 381 additions and 6623 deletions

9
.gitignore vendored
View File

@ -105,3 +105,12 @@
/gcc-13.0.1-20230421.tar.xz
/gcc-13.1.1-20230426.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

View File

@ -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
View File

@ -1,11 +1,11 @@
%global DATE 20230511
%global gitrev 55ca611b161ce96d568ea82ff0e6ea395dc76957
%global gcc_version 13.1.1
%global DATE 20231205
%global gitrev f783814ad6a04ae5ef44595216596a2b75eda15b
%global gcc_version 13.2.1
%global gcc_major 13
# Note, gcc_release must be integer, if you want to add suffixes to
# %%{release}, append them after %%{gcc_release} on Release: line.
%global gcc_release 2
%global nvptx_tools_gitrev 93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b
%global gcc_release 6
%global nvptx_tools_gitrev aa3404ad5a496cda5d79a50bedb1344fd63e8763
%global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409
%global _unpackaged_files_terminate_build 0
%global _performance_build 1
@ -93,7 +93,7 @@
%else
%global build_libatomic 0
%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
%else
%global build_libitm 0
@ -136,7 +136,7 @@
Summary: Various compilers (C, C++, Objective-C, ...)
Name: gcc
Version: %{gcc_version}
Release: %{gcc_release}.2.riscv64%{?dist}
Release: %{gcc_release}%{?dist}
# libgcc, libgfortran, libgomp, libstdc++ and crtstuff have
# GCC Runtime Exception.
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
Patch10: gcc13-rh1574936.patch
Patch11: gcc13-d-shared-libphobos.patch
Patch12: gcc13-pr110792.patch
Patch50: isl-rh2155127.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
# target triple.
@ -382,7 +376,11 @@ Summary: GNU Standard C++ Library
Autoreq: true
Requires: glibc >= 2.10.90-7
BuildRequires: tzdata >= 2017c
%if 0%{?fedora} > 38 || 0%{?rhel} > 9
Recommends: tzdata >= 2017c
%else
Requires: tzdata >= 2017c
%endif
%description -n libstdc++
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~
%endif
%patch -P11 -p0 -b .d-shared-libphobos~
%patch -P12 -p0 -b .pr110792~
%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
%if 0%{?rhel} >= 9
%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
%ifarch %{arm}
@ -997,13 +988,6 @@ ISL_FLAG_PIC=-fPIC
ISL_FLAG_PIC=-fpic
%endif
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' \
../../isl-%{isl_version}/Makefile.{am,in}
../../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/vecintrin.h
%endif
%ifarch riscv64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/riscv_vector.h
%endif
%if %{build_libasan}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sanitizer
%endif
@ -3478,16 +3459,123 @@ end
%endif
%changelog
* Thu May 18 2023 David Abdurachmanov <davidlt@rivosinc.com> 13.1.1-2.2.riscv64
- On riscv64 include these backports to fix libatomic issues:
- 55088cf384d4c43e280ec794217e32fab64070ba (from gcc13 branch)
- 203f3060dd363361b172f7295f42bb6bf5ac0b3b (from master branch)
* Tue Dec 5 2023 Jakub Jelinek <jakub@redhat.com> 13.2.1-6
- update from releases/gcc-13 branch
- PRs c++/33799, c++/102191, c++/111703, c++/112269, c++/112301, c++/112633,
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
- Update config.{sub,guess} scripts for ISL
- Fix annobin plugin Fedora version check
- Package riscv_vector.h (vector intrinsics) header
- Enable libitm for riscv64
* Mon Nov 13 2023 Jakub Jelinek <jakub@redhat.com> 13.2.1-5
- update from releases/gcc-13 branch
- PRs c++/89038, c/111884, d/110712, d/112270, fortran/67740, fortran/97245,
fortran/111837, fortran/112316, libbacktrace/111315,
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
- update from releases/gcc-13 branch

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -4,7 +4,7 @@
<a class="link" href="https://www.fsf.org" target="_top">FSF
</a>
</p><p>
+ Release 13.1.1
+ Release 13.2.1
+ </p><p>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation
@ -17,7 +17,7 @@
</p><p>
- The API documentation, rendered into HTML, can be viewed online
+ The API documentation, rendered into HTML, can be viewed locally
+ <a class="link" href="api/index.html" target="_top">for the 13.1.1 release</a>,
+ <a class="link" href="api/index.html" target="_top">for the 13.2.1 release</a>,
+ online
<a class="link" href="http://gcc.gnu.org/onlinedocs/" target="_top">for each GCC release</a>
and

View File

@ -5,7 +5,7 @@ libtool sucks.
rpath="$finalize_rpath"
test "$mode" != relink && rpath="$compile_rpath$rpath"
for libdir in $rpath; do
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64|/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_separator"; then
if test -z "$hardcode_libdirs"; then
@ -13,7 +13,7 @@ libtool sucks.
rpath=
hardcode_libdirs=
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_separator"; then
if test -z "$hardcode_libdirs"; then
@ -21,7 +21,7 @@ libtool sucks.
rpath=
hardcode_libdirs=
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_separator"; then
if test -z "$hardcode_libdirs"; then

163
gcc13-pr110792.patch Normal file
View 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;
+}

View File

@ -1,10 +1,13 @@
summary: CI Gating Plan
discover:
how: fmf
directory: tests
prepare:
- name: prepare
how: shell
script: ./plans/prepare.sh
url: https://src.fedoraproject.org/tests/gcc.git
filter: 'tag: Fedora-CI-gating'
execute:
how: tmt
adjust:
- prepare+:
- name: Add secondary architecture RPMs
how: shell
script: ./plans/provide_secondary_arch_rpms.sh
when: arch == x86_64

View File

@ -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 "^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^"

View 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 "^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^"

View File

@ -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 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983
SHA512 (nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz) = c719fad8689b2b6f3c888d0308604ddef884037d71ec3e755c68052d30075a181c29358fda516833ace437921b17602b147be7886317be94ec9736faa8cb52be
SHA512 (nvptx-tools-aa3404ad5a496cda5d79a50bedb1344fd63e8763.tar.xz) = 33a024326426375533cb5dd9b68b2508f37540be418d2506bfa19a5f5866485e9af150469064e9059b68136ad8cb080b3b12e7eb5c6b7d1288cf6bfb3f6bb5d0

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -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

View 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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -1,5 +0,0 @@
public class foo {
public static void main(String[] args) {
System.loadLibrary("foolib");
}
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,8 +0,0 @@
#include <stdio.h>
int
main ()
{
printf ("hello\n");
return 0;
}

View File

@ -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

View File

@ -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

View File

@ -1,7 +0,0 @@
#include <filesystem>
namespace fs = std::filesystem;
int main() {
fs::create_directory("sandbox");
fs::remove_all("sandbox");
}

View File

@ -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

View File

@ -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

View File

@ -1,6 +0,0 @@
#include <omp.h>
int main ()
{
#pragma omp parallel for schedule(dynamic)
for (int i = 0; i < 10; i++);
}

View File

@ -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

View File

@ -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

View File

@ -1,6 +0,0 @@
#include <stdarg.h>
void foo(int args, ...) {
va_list ap;
va_start(ap, args);
va_end(ap);
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 ();
}

View File

@ -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

View File

@ -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

View File

@ -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(); }

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,2 +0,0 @@
#include <sstream>
int main() {}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,7 +0,0 @@
int
main (void)
{
char *mem = __builtin_alloca (40);
__builtin___clear_cache (mem, mem + 40);
return 0;
}

View File

@ -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;
}

View File

@ -1,8 +0,0 @@
#include <stdio.h>
int
main (void)
{
puts ("Hello World!");
return 0;
}

View File

@ -1,7 +0,0 @@
#include <iostream>
int
main (void)
{
std::cout << "Hello, world!\n";
}

View File

@ -1,3 +0,0 @@
program hello
print *, "Hello World!"
end program hello

View File

@ -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);
}

View File

@ -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

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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

View File

@ -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;
}

View File

@ -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);
}

View File

@ -1,5 +0,0 @@
#include <stdio.h>
void hello() {
printf("Hello World\n");
}

View File

@ -1,5 +0,0 @@
#include <iostream>
void hello() {
std::cout << "Hello World\n";
}

View File

@ -1,6 +0,0 @@
void hello();
int main(int argc, char **argv) {
hello();
return 0;
}

View File

@ -1,6 +0,0 @@
void hello();
int main(int argc, char **argv) {
hello();
return 0;
}

View File

@ -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

View File

@ -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"

View File

@ -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)

View File

@ -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