diff --git a/.gitignore b/.gitignore
index a274f6a..80128da 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
diff --git a/203f3060dd363361b172f7295f42bb6bf5ac0b3b.patch b/203f3060dd363361b172f7295f42bb6bf5ac0b3b.patch
deleted file mode 100644
index 1932582..0000000
--- a/203f3060dd363361b172f7295f42bb6bf5ac0b3b.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 203f3060dd363361b172f7295f42bb6bf5ac0b3b Mon Sep 17 00:00:00 2001
-From: Andreas Schwab
-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
-
diff --git a/55088cf384d4c43e280ec794217e32fab64070ba.patch b/55088cf384d4c43e280ec794217e32fab64070ba.patch
deleted file mode 100644
index 3babada..0000000
--- a/55088cf384d4c43e280ec794217e32fab64070ba.patch
+++ /dev/null
@@ -1,2068 +0,0 @@
-From 55088cf384d4c43e280ec794217e32fab64070ba Mon Sep 17 00:00:00 2001
-From: Patrick O'Neill
-Date: Tue, 18 Apr 2023 14:33:13 -0700
-Subject: [PATCH] RISCV: Inline subword atomic ops
-
-RISC-V has no support for subword atomic operations; code currently
-generates libatomic library calls.
-
-This patch changes the default behavior to inline subword atomic calls
-(using the same logic as the existing library call).
-Behavior can be specified using the -minline-atomics and
--mno-inline-atomics command line flags.
-
-gcc/libgcc/config/riscv/atomic.c has the same logic implemented in asm.
-This will need to stay for backwards compatibility and the
--mno-inline-atomics flag.
-
-2023-05-03 Patrick O'Neill
-
-gcc/ChangeLog:
- PR target/104338
- * config/riscv/riscv-protos.h: Add helper function stubs.
- * config/riscv/riscv.cc: Add helper functions for subword masking.
- * config/riscv/riscv.opt: Add command-line flags
- -minline-atomics and -mno-inline-atomics.
- * config/riscv/sync.md: Add masking logic and inline asm for
- fetch_and_op, fetch_and_nand, CAS, and exchange ops.
- * doc/invoke.texi: Add blurb regarding new command-line flags
- -minline-atomics and -mno-inline-atomics.
-
-libgcc/ChangeLog:
- PR target/104338
- * config/riscv/atomic.c: Add reference to duplicate logic.
-
-gcc/testsuite/ChangeLog:
- PR target/104338
- * gcc.target/riscv/inline-atomics-1.c: New test.
- * gcc.target/riscv/inline-atomics-2.c: New test.
- * gcc.target/riscv/inline-atomics-3.c: New test.
- * gcc.target/riscv/inline-atomics-4.c: New test.
- * gcc.target/riscv/inline-atomics-5.c: New test.
- * gcc.target/riscv/inline-atomics-6.c: New test.
- * gcc.target/riscv/inline-atomics-7.c: New test.
- * gcc.target/riscv/inline-atomics-8.c: New test.
-
-Signed-off-by: Patrick O'Neill
-Signed-off-by: Palmer Dabbelt
----
- gcc/config/riscv/riscv-protos.h | 2 +
- gcc/config/riscv/riscv.cc | 49 ++
- gcc/config/riscv/riscv.opt | 4 +
- gcc/config/riscv/sync.md | 303 +++++++++-
- gcc/doc/invoke.texi | 10 +-
- .../gcc.target/riscv/inline-atomics-1.c | 18 +
- .../gcc.target/riscv/inline-atomics-2.c | 9 +
- .../gcc.target/riscv/inline-atomics-3.c | 569 ++++++++++++++++++
- .../gcc.target/riscv/inline-atomics-4.c | 566 +++++++++++++++++
- .../gcc.target/riscv/inline-atomics-5.c | 87 +++
- .../gcc.target/riscv/inline-atomics-6.c | 87 +++
- .../gcc.target/riscv/inline-atomics-7.c | 69 +++
- .../gcc.target/riscv/inline-atomics-8.c | 69 +++
- libgcc/config/riscv/atomic.c | 2 +
- 14 files changed, 1842 insertions(+), 2 deletions(-)
- create mode 100644 gcc/testsuite/gcc.target/riscv/inline-atomics-1.c
- create mode 100644 gcc/testsuite/gcc.target/riscv/inline-atomics-2.c
- create mode 100644 gcc/testsuite/gcc.target/riscv/inline-atomics-3.c
- create mode 100644 gcc/testsuite/gcc.target/riscv/inline-atomics-4.c
- create mode 100644 gcc/testsuite/gcc.target/riscv/inline-atomics-5.c
- create mode 100644 gcc/testsuite/gcc.target/riscv/inline-atomics-6.c
- create mode 100644 gcc/testsuite/gcc.target/riscv/inline-atomics-7.c
- create mode 100644 gcc/testsuite/gcc.target/riscv/inline-atomics-8.c
-
-diff --git a/gcc/config/riscv/riscv-protos.h b/gcc/config/riscv/riscv-protos.h
-index 5244e8dcbf0..02b33e02020 100644
---- a/gcc/config/riscv/riscv-protos.h
-+++ b/gcc/config/riscv/riscv-protos.h
-@@ -79,6 +79,8 @@ extern void riscv_reinit (void);
- extern poly_uint64 riscv_regmode_natural_size (machine_mode);
- extern bool riscv_v_ext_vector_mode_p (machine_mode);
- extern bool riscv_shamt_matches_mask_p (int, HOST_WIDE_INT);
-+extern void riscv_subword_address (rtx, rtx *, rtx *, rtx *, rtx *);
-+extern void riscv_lshift_subword (machine_mode, rtx, rtx, rtx *);
-
- /* Routines implemented in riscv-c.cc. */
- void riscv_cpu_cpp_builtins (cpp_reader *);
-diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc
-index e88fa2d6337..5f44f6dc5c9 100644
---- a/gcc/config/riscv/riscv.cc
-+++ b/gcc/config/riscv/riscv.cc
-@@ -7143,6 +7143,55 @@ riscv_zero_call_used_regs (HARD_REG_SET need_zeroed_hardregs)
- & ~zeroed_hardregs);
- }
-
-+/* Given memory reference MEM, expand code to compute the aligned
-+ memory address, shift and mask values and store them into
-+ *ALIGNED_MEM, *SHIFT, *MASK and *NOT_MASK. */
-+
-+void
-+riscv_subword_address (rtx mem, rtx *aligned_mem, rtx *shift, rtx *mask,
-+ rtx *not_mask)
-+{
-+ /* Align the memory address to a word. */
-+ rtx addr = force_reg (Pmode, XEXP (mem, 0));
-+
-+ rtx addr_mask = gen_int_mode (-4, Pmode);
-+
-+ rtx aligned_addr = gen_reg_rtx (Pmode);
-+ emit_move_insn (aligned_addr, gen_rtx_AND (Pmode, addr, addr_mask));
-+
-+ *aligned_mem = change_address (mem, SImode, aligned_addr);
-+
-+ /* Calculate the shift amount. */
-+ emit_move_insn (*shift, gen_rtx_AND (SImode, gen_lowpart (SImode, addr),
-+ gen_int_mode (3, SImode)));
-+ emit_move_insn (*shift, gen_rtx_ASHIFT (SImode, *shift,
-+ gen_int_mode (3, SImode)));
-+
-+ /* Calculate the mask. */
-+ int unshifted_mask = GET_MODE_MASK (GET_MODE (mem));
-+
-+ emit_move_insn (*mask, gen_int_mode (unshifted_mask, SImode));
-+
-+ emit_move_insn (*mask, gen_rtx_ASHIFT (SImode, *mask,
-+ gen_lowpart (QImode, *shift)));
-+
-+ emit_move_insn (*not_mask, gen_rtx_NOT (SImode, *mask));
-+}
-+
-+/* Leftshift a subword within an SImode register. */
-+
-+void
-+riscv_lshift_subword (machine_mode mode, rtx value, rtx shift,
-+ rtx *shifted_value)
-+{
-+ rtx value_reg = gen_reg_rtx (SImode);
-+ emit_move_insn (value_reg, simplify_gen_subreg (SImode, value,
-+ mode, 0));
-+
-+ emit_move_insn (*shifted_value, gen_rtx_ASHIFT (SImode, value_reg,
-+ gen_lowpart (QImode, shift)));
-+}
-+
- /* Initialize the GCC target structure. */
- #undef TARGET_ASM_ALIGNED_HI_OP
- #define TARGET_ASM_ALIGNED_HI_OP "\t.half\t"
-diff --git a/gcc/config/riscv/riscv.opt b/gcc/config/riscv/riscv.opt
-index ff1dd4ddd4f..bc5e63ab3e6 100644
---- a/gcc/config/riscv/riscv.opt
-+++ b/gcc/config/riscv/riscv.opt
-@@ -254,3 +254,7 @@ Enum(isa_spec_class) String(20191213) Value(ISA_SPEC_CLASS_20191213)
- misa-spec=
- Target RejectNegative Joined Enum(isa_spec_class) Var(riscv_isa_spec) Init(TARGET_DEFAULT_ISA_SPEC)
- Set the version of RISC-V ISA spec.
-+
-+minline-atomics
-+Target Var(TARGET_INLINE_SUBWORD_ATOMIC) Init(1)
-+Always inline subword atomic operations.
-diff --git a/gcc/config/riscv/sync.md b/gcc/config/riscv/sync.md
-index c932ef87b9d..19274528262 100644
---- a/gcc/config/riscv/sync.md
-+++ b/gcc/config/riscv/sync.md
-@@ -21,8 +21,11 @@
-
- (define_c_enum "unspec" [
- UNSPEC_COMPARE_AND_SWAP
-+ UNSPEC_COMPARE_AND_SWAP_SUBWORD
- UNSPEC_SYNC_OLD_OP
-+ UNSPEC_SYNC_OLD_OP_SUBWORD
- UNSPEC_SYNC_EXCHANGE
-+ UNSPEC_SYNC_EXCHANGE_SUBWORD
- UNSPEC_ATOMIC_STORE
- UNSPEC_MEMORY_BARRIER
- ])
-@@ -91,6 +94,135 @@
- [(set_attr "type" "atomic")
- (set (attr "length") (const_int 8))])
-
-+(define_insn "subword_atomic_fetch_strong_"
-+ [(set (match_operand:SI 0 "register_operand" "=&r") ;; old value at mem
-+ (match_operand:SI 1 "memory_operand" "+A")) ;; mem location
-+ (set (match_dup 1)
-+ (unspec_volatile:SI
-+ [(any_atomic:SI (match_dup 1)
-+ (match_operand:SI 2 "register_operand" "rI")) ;; value for op
-+ (match_operand:SI 3 "register_operand" "rI")] ;; mask
-+ UNSPEC_SYNC_OLD_OP_SUBWORD))
-+ (match_operand:SI 4 "register_operand" "rI") ;; not_mask
-+ (clobber (match_scratch:SI 5 "=&r")) ;; tmp_1
-+ (clobber (match_scratch:SI 6 "=&r"))] ;; tmp_2
-+ "TARGET_ATOMIC && TARGET_INLINE_SUBWORD_ATOMIC"
-+ {
-+ return "1:\;"
-+ "lr.w.aq\t%0, %1\;"
-+ "\t%5, %0, %2\;"
-+ "and\t%5, %5, %3\;"
-+ "and\t%6, %0, %4\;"
-+ "or\t%6, %6, %5\;"
-+ "sc.w.rl\t%5, %6, %1\;"
-+ "bnez\t%5, 1b";
-+ }
-+ [(set (attr "length") (const_int 28))])
-+
-+(define_expand "atomic_fetch_nand"
-+ [(match_operand:SHORT 0 "register_operand") ;; old value at mem
-+ (not:SHORT (and:SHORT (match_operand:SHORT 1 "memory_operand") ;; mem location
-+ (match_operand:SHORT 2 "reg_or_0_operand"))) ;; value for op
-+ (match_operand:SI 3 "const_int_operand")] ;; model
-+ "TARGET_ATOMIC && TARGET_INLINE_SUBWORD_ATOMIC"
-+{
-+ /* We have no QImode/HImode atomics, so form a mask, then use
-+ subword_atomic_fetch_strong_nand to implement a LR/SC version of the
-+ operation. */
-+
-+ /* Logic duplicated in gcc/libgcc/config/riscv/atomic.c for use when inlining
-+ is disabled. */
-+
-+ rtx old = gen_reg_rtx (SImode);
-+ rtx mem = operands[1];
-+ rtx value = operands[2];
-+ rtx aligned_mem = gen_reg_rtx (SImode);
-+ rtx shift = gen_reg_rtx (SImode);
-+ rtx mask = gen_reg_rtx (SImode);
-+ rtx not_mask = gen_reg_rtx (SImode);
-+
-+ riscv_subword_address (mem, &aligned_mem, &shift, &mask, ¬_mask);
-+
-+ rtx shifted_value = gen_reg_rtx (SImode);
-+ riscv_lshift_subword (mode, value, shift, &shifted_value);
-+
-+ emit_insn (gen_subword_atomic_fetch_strong_nand (old, aligned_mem,
-+ shifted_value,
-+ mask, not_mask));
-+
-+ emit_move_insn (old, gen_rtx_ASHIFTRT (SImode, old,
-+ gen_lowpart (QImode, shift)));
-+
-+ emit_move_insn (operands[0], gen_lowpart (mode, old));
-+
-+ DONE;
-+})
-+
-+(define_insn "subword_atomic_fetch_strong_nand"
-+ [(set (match_operand:SI 0 "register_operand" "=&r") ;; old value at mem
-+ (match_operand:SI 1 "memory_operand" "+A")) ;; mem location
-+ (set (match_dup 1)
-+ (unspec_volatile:SI
-+ [(not:SI (and:SI (match_dup 1)
-+ (match_operand:SI 2 "register_operand" "rI"))) ;; value for op
-+ (match_operand:SI 3 "register_operand" "rI")] ;; mask
-+ UNSPEC_SYNC_OLD_OP_SUBWORD))
-+ (match_operand:SI 4 "register_operand" "rI") ;; not_mask
-+ (clobber (match_scratch:SI 5 "=&r")) ;; tmp_1
-+ (clobber (match_scratch:SI 6 "=&r"))] ;; tmp_2
-+ "TARGET_ATOMIC && TARGET_INLINE_SUBWORD_ATOMIC"
-+ {
-+ return "1:\;"
-+ "lr.w.aq\t%0, %1\;"
-+ "and\t%5, %0, %2\;"
-+ "not\t%5, %5\;"
-+ "and\t%5, %5, %3\;"
-+ "and\t%6, %0, %4\;"
-+ "or\t%6, %6, %5\;"
-+ "sc.w.rl\t%5, %6, %1\;"
-+ "bnez\t%5, 1b";
-+ }
-+ [(set (attr "length") (const_int 32))])
-+
-+(define_expand "atomic_fetch_"
-+ [(match_operand:SHORT 0 "register_operand") ;; old value at mem
-+ (any_atomic:SHORT (match_operand:SHORT 1 "memory_operand") ;; mem location
-+ (match_operand:SHORT 2 "reg_or_0_operand")) ;; value for op
-+ (match_operand:SI 3 "const_int_operand")] ;; model
-+ "TARGET_ATOMIC && TARGET_INLINE_SUBWORD_ATOMIC"
-+{
-+ /* We have no QImode/HImode atomics, so form a mask, then use
-+ subword_atomic_fetch_strong_ to implement a LR/SC version of the
-+ operation. */
-+
-+ /* Logic duplicated in gcc/libgcc/config/riscv/atomic.c for use when inlining
-+ is disabled. */
-+
-+ rtx old = gen_reg_rtx (SImode);
-+ rtx mem = operands[1];
-+ rtx value = operands[2];
-+ rtx aligned_mem = gen_reg_rtx (SImode);
-+ rtx shift = gen_reg_rtx (SImode);
-+ rtx mask = gen_reg_rtx (SImode);
-+ rtx not_mask = gen_reg_rtx (SImode);
-+
-+ riscv_subword_address (mem, &aligned_mem, &shift, &mask, ¬_mask);
-+
-+ rtx shifted_value = gen_reg_rtx (SImode);
-+ riscv_lshift_subword (mode, value, shift, &shifted_value);
-+
-+ emit_insn (gen_subword_atomic_fetch_strong_ (old, aligned_mem,
-+ shifted_value,
-+ mask, not_mask));
-+
-+ emit_move_insn (old, gen_rtx_ASHIFTRT (SImode, old,
-+ gen_lowpart (QImode, shift)));
-+
-+ emit_move_insn (operands[0], gen_lowpart (mode, old));
-+
-+ DONE;
-+})
-+
- (define_insn "atomic_exchange"
- [(set (match_operand:GPR 0 "register_operand" "=&r")
- (unspec_volatile:GPR
-@@ -104,6 +236,56 @@
- [(set_attr "type" "atomic")
- (set (attr "length") (const_int 8))])
-
-+(define_expand "atomic_exchange"
-+ [(match_operand:SHORT 0 "register_operand") ;; old value at mem
-+ (match_operand:SHORT 1 "memory_operand") ;; mem location
-+ (match_operand:SHORT 2 "register_operand") ;; value
-+ (match_operand:SI 3 "const_int_operand")] ;; model
-+ "TARGET_ATOMIC && TARGET_INLINE_SUBWORD_ATOMIC"
-+{
-+ rtx old = gen_reg_rtx (SImode);
-+ rtx mem = operands[1];
-+ rtx value = operands[2];
-+ rtx aligned_mem = gen_reg_rtx (SImode);
-+ rtx shift = gen_reg_rtx (SImode);
-+ rtx mask = gen_reg_rtx (SImode);
-+ rtx not_mask = gen_reg_rtx (SImode);
-+
-+ riscv_subword_address (mem, &aligned_mem, &shift, &mask, ¬_mask);
-+
-+ rtx shifted_value = gen_reg_rtx (SImode);
-+ riscv_lshift_subword (mode, value, shift, &shifted_value);
-+
-+ emit_insn (gen_subword_atomic_exchange_strong (old, aligned_mem,
-+ shifted_value, not_mask));
-+
-+ emit_move_insn (old, gen_rtx_ASHIFTRT (SImode, old,
-+ gen_lowpart (QImode, shift)));
-+
-+ emit_move_insn (operands[0], gen_lowpart (mode, old));
-+ DONE;
-+})
-+
-+(define_insn "subword_atomic_exchange_strong"
-+ [(set (match_operand:SI 0 "register_operand" "=&r") ;; old value at mem
-+ (match_operand:SI 1 "memory_operand" "+A")) ;; mem location
-+ (set (match_dup 1)
-+ (unspec_volatile:SI
-+ [(match_operand:SI 2 "reg_or_0_operand" "rI") ;; value
-+ (match_operand:SI 3 "reg_or_0_operand" "rI")] ;; not_mask
-+ UNSPEC_SYNC_EXCHANGE_SUBWORD))
-+ (clobber (match_scratch:SI 4 "=&r"))] ;; tmp_1
-+ "TARGET_ATOMIC && TARGET_INLINE_SUBWORD_ATOMIC"
-+ {
-+ return "1:\;"
-+ "lr.w.aq\t%0, %1\;"
-+ "and\t%4, %0, %3\;"
-+ "or\t%4, %4, %2\;"
-+ "sc.w.rl\t%4, %4, %1\;"
-+ "bnez\t%4, 1b";
-+ }
-+ [(set (attr "length") (const_int 20))])
-+
- (define_insn "atomic_cas_value_strong"
- [(set (match_operand:GPR 0 "register_operand" "=&r")
- (match_operand:GPR 1 "memory_operand" "+A"))
-@@ -153,6 +335,125 @@
- DONE;
- })
-
-+(define_expand "atomic_compare_and_swap"
-+ [(match_operand:SI 0 "register_operand") ;; bool output
-+ (match_operand:SHORT 1 "register_operand") ;; val output
-+ (match_operand:SHORT 2 "memory_operand") ;; memory
-+ (match_operand:SHORT 3 "reg_or_0_operand") ;; expected value
-+ (match_operand:SHORT 4 "reg_or_0_operand") ;; desired value
-+ (match_operand:SI 5 "const_int_operand") ;; is_weak
-+ (match_operand:SI 6 "const_int_operand") ;; mod_s
-+ (match_operand:SI 7 "const_int_operand")] ;; mod_f
-+ "TARGET_ATOMIC && TARGET_INLINE_SUBWORD_ATOMIC"
-+{
-+ emit_insn (gen_atomic_cas_value_strong (operands[1], operands[2],
-+ operands[3], operands[4],
-+ operands[6], operands[7]));
-+
-+ rtx val = gen_reg_rtx (SImode);
-+ if (operands[1] != const0_rtx)
-+ emit_move_insn (val, gen_rtx_SIGN_EXTEND (SImode, operands[1]));
-+ else
-+ emit_move_insn (val, const0_rtx);
-+
-+ rtx exp = gen_reg_rtx (SImode);
-+ if (operands[3] != const0_rtx)
-+ emit_move_insn (exp, gen_rtx_SIGN_EXTEND (SImode, operands[3]));
-+ else
-+ emit_move_insn (exp, const0_rtx);
-+
-+ rtx compare = val;
-+ if (exp != const0_rtx)
-+ {
-+ rtx difference = gen_rtx_MINUS (SImode, val, exp);
-+ compare = gen_reg_rtx (SImode);
-+ emit_move_insn (compare, difference);
-+ }
-+
-+ if (word_mode != SImode)
-+ {
-+ rtx reg = gen_reg_rtx (word_mode);
-+ emit_move_insn (reg, gen_rtx_SIGN_EXTEND (word_mode, compare));
-+ compare = reg;
-+ }
-+
-+ emit_move_insn (operands[0], gen_rtx_EQ (SImode, compare, const0_rtx));
-+ DONE;
-+})
-+
-+(define_expand "atomic_cas_value_strong"
-+ [(match_operand:SHORT 0 "register_operand") ;; val output
-+ (match_operand:SHORT 1 "memory_operand") ;; memory
-+ (match_operand:SHORT 2 "reg_or_0_operand") ;; expected value
-+ (match_operand:SHORT 3 "reg_or_0_operand") ;; desired value
-+ (match_operand:SI 4 "const_int_operand") ;; mod_s
-+ (match_operand:SI 5 "const_int_operand") ;; mod_f
-+ (match_scratch:SHORT 6)]
-+ "TARGET_ATOMIC && TARGET_INLINE_SUBWORD_ATOMIC"
-+{
-+ /* We have no QImode/HImode atomics, so form a mask, then use
-+ subword_atomic_cas_strong to implement a LR/SC version of the
-+ operation. */
-+
-+ /* Logic duplicated in gcc/libgcc/config/riscv/atomic.c for use when inlining
-+ is disabled. */
-+
-+ rtx old = gen_reg_rtx (SImode);
-+ rtx mem = operands[1];
-+ rtx aligned_mem = gen_reg_rtx (SImode);
-+ rtx shift = gen_reg_rtx (SImode);
-+ rtx mask = gen_reg_rtx (SImode);
-+ rtx not_mask = gen_reg_rtx (SImode);
-+
-+ riscv_subword_address (mem, &aligned_mem, &shift, &mask, ¬_mask);
-+
-+ rtx o = operands[2];
-+ rtx n = operands[3];
-+ rtx shifted_o = gen_reg_rtx (SImode);
-+ rtx shifted_n = gen_reg_rtx (SImode);
-+
-+ riscv_lshift_subword (mode, o, shift, &shifted_o);
-+ riscv_lshift_subword (mode, n, shift, &shifted_n);
-+
-+ emit_move_insn (shifted_o, gen_rtx_AND (SImode, shifted_o, mask));
-+ emit_move_insn (shifted_n, gen_rtx_AND (SImode, shifted_n, mask));
-+
-+ emit_insn (gen_subword_atomic_cas_strong (old, aligned_mem,
-+ shifted_o, shifted_n,
-+ mask, not_mask));
-+
-+ emit_move_insn (old, gen_rtx_ASHIFTRT (SImode, old,
-+ gen_lowpart (QImode, shift)));
-+
-+ emit_move_insn (operands[0], gen_lowpart (mode, old));
-+
-+ DONE;
-+})
-+
-+(define_insn "subword_atomic_cas_strong"
-+ [(set (match_operand:SI 0 "register_operand" "=&r") ;; old value at mem
-+ (match_operand:SI 1 "memory_operand" "+A")) ;; mem location
-+ (set (match_dup 1)
-+ (unspec_volatile:SI [(match_operand:SI 2 "reg_or_0_operand" "rJ") ;; expected value
-+ (match_operand:SI 3 "reg_or_0_operand" "rJ")] ;; desired value
-+ UNSPEC_COMPARE_AND_SWAP_SUBWORD))
-+ (match_operand:SI 4 "register_operand" "rI") ;; mask
-+ (match_operand:SI 5 "register_operand" "rI") ;; not_mask
-+ (clobber (match_scratch:SI 6 "=&r"))] ;; tmp_1
-+ "TARGET_ATOMIC && TARGET_INLINE_SUBWORD_ATOMIC"
-+ {
-+ return "1:\;"
-+ "lr.w.aq\t%0, %1\;"
-+ "and\t%6, %0, %4\;"
-+ "bne\t%6, %z2, 1f\;"
-+ "and\t%6, %0, %5\;"
-+ "or\t%6, %6, %3\;"
-+ "sc.w.rl\t%6, %6, %1\;"
-+ "bnez\t%6, 1b\;"
-+ "1:";
-+ }
-+ [(set (attr "length") (const_int 28))])
-+
- (define_expand "atomic_test_and_set"
- [(match_operand:QI 0 "register_operand" "") ;; bool output
- (match_operand:QI 1 "memory_operand" "+A") ;; memory
-@@ -160,7 +461,7 @@
- "TARGET_ATOMIC"
- {
- /* We have no QImode atomics, so use the address LSBs to form a mask,
-- then use an aligned SImode atomic. */
-+ then use an aligned SImode atomic. */
- rtx result = operands[0];
- rtx mem = operands[1];
- rtx model = operands[2];
-diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
-index 36ed1591440..c0c3ad14515 100644
---- a/gcc/doc/invoke.texi
-+++ b/gcc/doc/invoke.texi
-@@ -1226,7 +1226,8 @@ See RS/6000 and PowerPC Options.
- -mbig-endian -mlittle-endian
- -mstack-protector-guard=@var{guard} -mstack-protector-guard-reg=@var{reg}
- -mstack-protector-guard-offset=@var{offset}
---mcsr-check -mno-csr-check}
-+-mcsr-check -mno-csr-check
-+-minline-atomics -mno-inline-atomics}
-
- @emph{RL78 Options}
- @gccoptlist{-msim -mmul=none -mmul=g13 -mmul=g14 -mallregs
-@@ -29007,6 +29008,13 @@ Do or don't use smaller but slower prologue and epilogue code that uses
- library function calls. The default is to use fast inline prologues and
- epilogues.
-
-+@opindex minline-atomics
-+@item -minline-atomics
-+@itemx -mno-inline-atomics
-+Do or don't use smaller but slower subword atomic emulation code that uses
-+libatomic function calls. The default is to use fast inline subword atomics
-+that do not require libatomic.
-+
- @opindex mshorten-memrefs
- @item -mshorten-memrefs
- @itemx -mno-shorten-memrefs
-diff --git a/gcc/testsuite/gcc.target/riscv/inline-atomics-1.c b/gcc/testsuite/gcc.target/riscv/inline-atomics-1.c
-new file mode 100644
-index 00000000000..5c5623d9b2f
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/riscv/inline-atomics-1.c
-@@ -0,0 +1,18 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mno-inline-atomics" } */
-+/* { dg-message "note: '__sync_fetch_and_nand' changed semantics in GCC 4.4" "fetch_and_nand" { target *-*-* } 0 } */
-+/* { dg-final { scan-assembler "\tcall\t__sync_fetch_and_add_1" } } */
-+/* { dg-final { scan-assembler "\tcall\t__sync_fetch_and_nand_1" } } */
-+/* { dg-final { scan-assembler "\tcall\t__sync_bool_compare_and_swap_1" } } */
-+
-+char foo;
-+char bar;
-+char baz;
-+
-+int
-+main ()
-+{
-+ __sync_fetch_and_add(&foo, 1);
-+ __sync_fetch_and_nand(&bar, 1);
-+ __sync_bool_compare_and_swap (&baz, 1, 2);
-+}
-diff --git a/gcc/testsuite/gcc.target/riscv/inline-atomics-2.c b/gcc/testsuite/gcc.target/riscv/inline-atomics-2.c
-new file mode 100644
-index 00000000000..01b43908692
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/riscv/inline-atomics-2.c
-@@ -0,0 +1,9 @@
-+/* { dg-do compile } */
-+/* Verify that subword atomics do not generate calls. */
-+/* { dg-options "-minline-atomics" } */
-+/* { dg-message "note: '__sync_fetch_and_nand' changed semantics in GCC 4.4" "fetch_and_nand" { target *-*-* } 0 } */
-+/* { dg-final { scan-assembler-not "\tcall\t__sync_fetch_and_add_1" } } */
-+/* { dg-final { scan-assembler-not "\tcall\t__sync_fetch_and_nand_1" } } */
-+/* { dg-final { scan-assembler-not "\tcall\t__sync_bool_compare_and_swap_1" } } */
-+
-+#include "inline-atomics-1.c"
-\ No newline at end of file
-diff --git a/gcc/testsuite/gcc.target/riscv/inline-atomics-3.c b/gcc/testsuite/gcc.target/riscv/inline-atomics-3.c
-new file mode 100644
-index 00000000000..709f3734377
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/riscv/inline-atomics-3.c
-@@ -0,0 +1,569 @@
-+/* Check all char alignments. */
-+/* Duplicate logic as libatomic/testsuite/libatomic.c/atomic-op-1.c */
-+/* Test __atomic routines for existence and proper execution on 1 byte
-+ values with each valid memory model. */
-+/* { dg-do run } */
-+/* { dg-options "-minline-atomics -Wno-address-of-packed-member" } */
-+
-+/* Test the execution of the __atomic_*OP builtin routines for a char. */
-+
-+extern void abort(void);
-+
-+char count, res;
-+const char init = ~0;
-+
-+struct A
-+{
-+ char a;
-+ char b;
-+ char c;
-+ char d;
-+} __attribute__ ((packed)) A;
-+
-+/* The fetch_op routines return the original value before the operation. */
-+
-+void
-+test_fetch_add (char* v)
-+{
-+ *v = 0;
-+ count = 1;
-+
-+ if (__atomic_fetch_add (v, count, __ATOMIC_RELAXED) != 0)
-+ abort ();
-+
-+ if (__atomic_fetch_add (v, 1, __ATOMIC_CONSUME) != 1)
-+ abort ();
-+
-+ if (__atomic_fetch_add (v, count, __ATOMIC_ACQUIRE) != 2)
-+ abort ();
-+
-+ if (__atomic_fetch_add (v, 1, __ATOMIC_RELEASE) != 3)
-+ abort ();
-+
-+ if (__atomic_fetch_add (v, count, __ATOMIC_ACQ_REL) != 4)
-+ abort ();
-+
-+ if (__atomic_fetch_add (v, 1, __ATOMIC_SEQ_CST) != 5)
-+ abort ();
-+}
-+
-+
-+void
-+test_fetch_sub (char* v)
-+{
-+ *v = res = 20;
-+ count = 0;
-+
-+ if (__atomic_fetch_sub (v, count + 1, __ATOMIC_RELAXED) != res--)
-+ abort ();
-+
-+ if (__atomic_fetch_sub (v, 1, __ATOMIC_CONSUME) != res--)
-+ abort ();
-+
-+ if (__atomic_fetch_sub (v, count + 1, __ATOMIC_ACQUIRE) != res--)
-+ abort ();
-+
-+ if (__atomic_fetch_sub (v, 1, __ATOMIC_RELEASE) != res--)
-+ abort ();
-+
-+ if (__atomic_fetch_sub (v, count + 1, __ATOMIC_ACQ_REL) != res--)
-+ abort ();
-+
-+ if (__atomic_fetch_sub (v, 1, __ATOMIC_SEQ_CST) != res--)
-+ abort ();
-+}
-+
-+void
-+test_fetch_and (char* v)
-+{
-+ *v = init;
-+
-+ if (__atomic_fetch_and (v, 0, __ATOMIC_RELAXED) != init)
-+ abort ();
-+
-+ if (__atomic_fetch_and (v, init, __ATOMIC_CONSUME) != 0)
-+ abort ();
-+
-+ if (__atomic_fetch_and (v, 0, __ATOMIC_ACQUIRE) != 0)
-+ abort ();
-+
-+ *v = ~*v;
-+ if (__atomic_fetch_and (v, init, __ATOMIC_RELEASE) != init)
-+ abort ();
-+
-+ if (__atomic_fetch_and (v, 0, __ATOMIC_ACQ_REL) != init)
-+ abort ();
-+
-+ if (__atomic_fetch_and (v, 0, __ATOMIC_SEQ_CST) != 0)
-+ abort ();
-+}
-+
-+void
-+test_fetch_nand (char* v)
-+{
-+ *v = init;
-+
-+ if (__atomic_fetch_nand (v, 0, __ATOMIC_RELAXED) != init)
-+ abort ();
-+
-+ if (__atomic_fetch_nand (v, init, __ATOMIC_CONSUME) != init)
-+ abort ();
-+
-+ if (__atomic_fetch_nand (v, 0, __ATOMIC_ACQUIRE) != 0 )
-+ abort ();
-+
-+ if (__atomic_fetch_nand (v, init, __ATOMIC_RELEASE) != init)
-+ abort ();
-+
-+ if (__atomic_fetch_nand (v, init, __ATOMIC_ACQ_REL) != 0)
-+ abort ();
-+
-+ if (__atomic_fetch_nand (v, 0, __ATOMIC_SEQ_CST) != init)
-+ abort ();
-+}
-+
-+void
-+test_fetch_xor (char* v)
-+{
-+ *v = init;
-+ count = 0;
-+
-+ if (__atomic_fetch_xor (v, count, __ATOMIC_RELAXED) != init)
-+ abort ();
-+
-+ if (__atomic_fetch_xor (v, ~count, __ATOMIC_CONSUME) != init)
-+ abort ();
-+
-+ if (__atomic_fetch_xor (v, 0, __ATOMIC_ACQUIRE) != 0)
-+ abort ();
-+
-+ if (__atomic_fetch_xor (v, ~count, __ATOMIC_RELEASE) != 0)
-+ abort ();
-+
-+ if (__atomic_fetch_xor (v, 0, __ATOMIC_ACQ_REL) != init)
-+ abort ();
-+
-+ if (__atomic_fetch_xor (v, ~count, __ATOMIC_SEQ_CST) != init)
-+ abort ();
-+}
-+
-+void
-+test_fetch_or (char* v)
-+{
-+ *v = 0;
-+ count = 1;
-+
-+ if (__atomic_fetch_or (v, count, __ATOMIC_RELAXED) != 0)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_fetch_or (v, 2, __ATOMIC_CONSUME) != 1)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_fetch_or (v, count, __ATOMIC_ACQUIRE) != 3)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_fetch_or (v, 8, __ATOMIC_RELEASE) != 7)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_fetch_or (v, count, __ATOMIC_ACQ_REL) != 15)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_fetch_or (v, count, __ATOMIC_SEQ_CST) != 31)
-+ abort ();
-+}
-+
-+/* The OP_fetch routines return the new value after the operation. */
-+
-+void
-+test_add_fetch (char* v)
-+{
-+ *v = 0;
-+ count = 1;
-+
-+ if (__atomic_add_fetch (v, count, __ATOMIC_RELAXED) != 1)
-+ abort ();
-+
-+ if (__atomic_add_fetch (v, 1, __ATOMIC_CONSUME) != 2)
-+ abort ();
-+
-+ if (__atomic_add_fetch (v, count, __ATOMIC_ACQUIRE) != 3)
-+ abort ();
-+
-+ if (__atomic_add_fetch (v, 1, __ATOMIC_RELEASE) != 4)
-+ abort ();
-+
-+ if (__atomic_add_fetch (v, count, __ATOMIC_ACQ_REL) != 5)
-+ abort ();
-+
-+ if (__atomic_add_fetch (v, count, __ATOMIC_SEQ_CST) != 6)
-+ abort ();
-+}
-+
-+
-+void
-+test_sub_fetch (char* v)
-+{
-+ *v = res = 20;
-+ count = 0;
-+
-+ if (__atomic_sub_fetch (v, count + 1, __ATOMIC_RELAXED) != --res)
-+ abort ();
-+
-+ if (__atomic_sub_fetch (v, 1, __ATOMIC_CONSUME) != --res)
-+ abort ();
-+
-+ if (__atomic_sub_fetch (v, count + 1, __ATOMIC_ACQUIRE) != --res)
-+ abort ();
-+
-+ if (__atomic_sub_fetch (v, 1, __ATOMIC_RELEASE) != --res)
-+ abort ();
-+
-+ if (__atomic_sub_fetch (v, count + 1, __ATOMIC_ACQ_REL) != --res)
-+ abort ();
-+
-+ if (__atomic_sub_fetch (v, count + 1, __ATOMIC_SEQ_CST) != --res)
-+ abort ();
-+}
-+
-+void
-+test_and_fetch (char* v)
-+{
-+ *v = init;
-+
-+ if (__atomic_and_fetch (v, 0, __ATOMIC_RELAXED) != 0)
-+ abort ();
-+
-+ *v = init;
-+ if (__atomic_and_fetch (v, init, __ATOMIC_CONSUME) != init)
-+ abort ();
-+
-+ if (__atomic_and_fetch (v, 0, __ATOMIC_ACQUIRE) != 0)
-+ abort ();
-+
-+ *v = ~*v;
-+ if (__atomic_and_fetch (v, init, __ATOMIC_RELEASE) != init)
-+ abort ();
-+
-+ if (__atomic_and_fetch (v, 0, __ATOMIC_ACQ_REL) != 0)
-+ abort ();
-+
-+ *v = ~*v;
-+ if (__atomic_and_fetch (v, 0, __ATOMIC_SEQ_CST) != 0)
-+ abort ();
-+}
-+
-+void
-+test_nand_fetch (char* v)
-+{
-+ *v = init;
-+
-+ if (__atomic_nand_fetch (v, 0, __ATOMIC_RELAXED) != init)
-+ abort ();
-+
-+ if (__atomic_nand_fetch (v, init, __ATOMIC_CONSUME) != 0)
-+ abort ();
-+
-+ if (__atomic_nand_fetch (v, 0, __ATOMIC_ACQUIRE) != init)
-+ abort ();
-+
-+ if (__atomic_nand_fetch (v, init, __ATOMIC_RELEASE) != 0)
-+ abort ();
-+
-+ if (__atomic_nand_fetch (v, init, __ATOMIC_ACQ_REL) != init)
-+ abort ();
-+
-+ if (__atomic_nand_fetch (v, 0, __ATOMIC_SEQ_CST) != init)
-+ abort ();
-+}
-+
-+
-+
-+void
-+test_xor_fetch (char* v)
-+{
-+ *v = init;
-+ count = 0;
-+
-+ if (__atomic_xor_fetch (v, count, __ATOMIC_RELAXED) != init)
-+ abort ();
-+
-+ if (__atomic_xor_fetch (v, ~count, __ATOMIC_CONSUME) != 0)
-+ abort ();
-+
-+ if (__atomic_xor_fetch (v, 0, __ATOMIC_ACQUIRE) != 0)
-+ abort ();
-+
-+ if (__atomic_xor_fetch (v, ~count, __ATOMIC_RELEASE) != init)
-+ abort ();
-+
-+ if (__atomic_xor_fetch (v, 0, __ATOMIC_ACQ_REL) != init)
-+ abort ();
-+
-+ if (__atomic_xor_fetch (v, ~count, __ATOMIC_SEQ_CST) != 0)
-+ abort ();
-+}
-+
-+void
-+test_or_fetch (char* v)
-+{
-+ *v = 0;
-+ count = 1;
-+
-+ if (__atomic_or_fetch (v, count, __ATOMIC_RELAXED) != 1)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_or_fetch (v, 2, __ATOMIC_CONSUME) != 3)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_or_fetch (v, count, __ATOMIC_ACQUIRE) != 7)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_or_fetch (v, 8, __ATOMIC_RELEASE) != 15)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_or_fetch (v, count, __ATOMIC_ACQ_REL) != 31)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_or_fetch (v, count, __ATOMIC_SEQ_CST) != 63)
-+ abort ();
-+}
-+
-+
-+/* Test the OP routines with a result which isn't used. Use both variations
-+ within each function. */
-+
-+void
-+test_add (char* v)
-+{
-+ *v = 0;
-+ count = 1;
-+
-+ __atomic_add_fetch (v, count, __ATOMIC_RELAXED);
-+ if (*v != 1)
-+ abort ();
-+
-+ __atomic_fetch_add (v, count, __ATOMIC_CONSUME);
-+ if (*v != 2)
-+ abort ();
-+
-+ __atomic_add_fetch (v, 1 , __ATOMIC_ACQUIRE);
-+ if (*v != 3)
-+ abort ();
-+
-+ __atomic_fetch_add (v, 1, __ATOMIC_RELEASE);
-+ if (*v != 4)
-+ abort ();
-+
-+ __atomic_add_fetch (v, count, __ATOMIC_ACQ_REL);
-+ if (*v != 5)
-+ abort ();
-+
-+ __atomic_fetch_add (v, count, __ATOMIC_SEQ_CST);
-+ if (*v != 6)
-+ abort ();
-+}
-+
-+
-+void
-+test_sub (char* v)
-+{
-+ *v = res = 20;
-+ count = 0;
-+
-+ __atomic_sub_fetch (v, count + 1, __ATOMIC_RELAXED);
-+ if (*v != --res)
-+ abort ();
-+
-+ __atomic_fetch_sub (v, count + 1, __ATOMIC_CONSUME);
-+ if (*v != --res)
-+ abort ();
-+
-+ __atomic_sub_fetch (v, 1, __ATOMIC_ACQUIRE);
-+ if (*v != --res)
-+ abort ();
-+
-+ __atomic_fetch_sub (v, 1, __ATOMIC_RELEASE);
-+ if (*v != --res)
-+ abort ();
-+
-+ __atomic_sub_fetch (v, count + 1, __ATOMIC_ACQ_REL);
-+ if (*v != --res)
-+ abort ();
-+
-+ __atomic_fetch_sub (v, count + 1, __ATOMIC_SEQ_CST);
-+ if (*v != --res)
-+ abort ();
-+}
-+
-+void
-+test_and (char* v)
-+{
-+ *v = init;
-+
-+ __atomic_and_fetch (v, 0, __ATOMIC_RELAXED);
-+ if (*v != 0)
-+ abort ();
-+
-+ *v = init;
-+ __atomic_fetch_and (v, init, __ATOMIC_CONSUME);
-+ if (*v != init)
-+ abort ();
-+
-+ __atomic_and_fetch (v, 0, __ATOMIC_ACQUIRE);
-+ if (*v != 0)
-+ abort ();
-+
-+ *v = ~*v;
-+ __atomic_fetch_and (v, init, __ATOMIC_RELEASE);
-+ if (*v != init)
-+ abort ();
-+
-+ __atomic_and_fetch (v, 0, __ATOMIC_ACQ_REL);
-+ if (*v != 0)
-+ abort ();
-+
-+ *v = ~*v;
-+ __atomic_fetch_and (v, 0, __ATOMIC_SEQ_CST);
-+ if (*v != 0)
-+ abort ();
-+}
-+
-+void
-+test_nand (char* v)
-+{
-+ *v = init;
-+
-+ __atomic_fetch_nand (v, 0, __ATOMIC_RELAXED);
-+ if (*v != init)
-+ abort ();
-+
-+ __atomic_fetch_nand (v, init, __ATOMIC_CONSUME);
-+ if (*v != 0)
-+ abort ();
-+
-+ __atomic_nand_fetch (v, 0, __ATOMIC_ACQUIRE);
-+ if (*v != init)
-+ abort ();
-+
-+ __atomic_nand_fetch (v, init, __ATOMIC_RELEASE);
-+ if (*v != 0)
-+ abort ();
-+
-+ __atomic_fetch_nand (v, init, __ATOMIC_ACQ_REL);
-+ if (*v != init)
-+ abort ();
-+
-+ __atomic_nand_fetch (v, 0, __ATOMIC_SEQ_CST);
-+ if (*v != init)
-+ abort ();
-+}
-+
-+
-+
-+void
-+test_xor (char* v)
-+{
-+ *v = init;
-+ count = 0;
-+
-+ __atomic_xor_fetch (v, count, __ATOMIC_RELAXED);
-+ if (*v != init)
-+ abort ();
-+
-+ __atomic_fetch_xor (v, ~count, __ATOMIC_CONSUME);
-+ if (*v != 0)
-+ abort ();
-+
-+ __atomic_xor_fetch (v, 0, __ATOMIC_ACQUIRE);
-+ if (*v != 0)
-+ abort ();
-+
-+ __atomic_fetch_xor (v, ~count, __ATOMIC_RELEASE);
-+ if (*v != init)
-+ abort ();
-+
-+ __atomic_fetch_xor (v, 0, __ATOMIC_ACQ_REL);
-+ if (*v != init)
-+ abort ();
-+
-+ __atomic_xor_fetch (v, ~count, __ATOMIC_SEQ_CST);
-+ if (*v != 0)
-+ abort ();
-+}
-+
-+void
-+test_or (char* v)
-+{
-+ *v = 0;
-+ count = 1;
-+
-+ __atomic_or_fetch (v, count, __ATOMIC_RELAXED);
-+ if (*v != 1)
-+ abort ();
-+
-+ count *= 2;
-+ __atomic_fetch_or (v, count, __ATOMIC_CONSUME);
-+ if (*v != 3)
-+ abort ();
-+
-+ count *= 2;
-+ __atomic_or_fetch (v, 4, __ATOMIC_ACQUIRE);
-+ if (*v != 7)
-+ abort ();
-+
-+ count *= 2;
-+ __atomic_fetch_or (v, 8, __ATOMIC_RELEASE);
-+ if (*v != 15)
-+ abort ();
-+
-+ count *= 2;
-+ __atomic_or_fetch (v, count, __ATOMIC_ACQ_REL);
-+ if (*v != 31)
-+ abort ();
-+
-+ count *= 2;
-+ __atomic_fetch_or (v, count, __ATOMIC_SEQ_CST);
-+ if (*v != 63)
-+ abort ();
-+}
-+
-+int
-+main ()
-+{
-+ char* V[] = {&A.a, &A.b, &A.c, &A.d};
-+
-+ for (int i = 0; i < 4; i++) {
-+ test_fetch_add (V[i]);
-+ test_fetch_sub (V[i]);
-+ test_fetch_and (V[i]);
-+ test_fetch_nand (V[i]);
-+ test_fetch_xor (V[i]);
-+ test_fetch_or (V[i]);
-+
-+ test_add_fetch (V[i]);
-+ test_sub_fetch (V[i]);
-+ test_and_fetch (V[i]);
-+ test_nand_fetch (V[i]);
-+ test_xor_fetch (V[i]);
-+ test_or_fetch (V[i]);
-+
-+ test_add (V[i]);
-+ test_sub (V[i]);
-+ test_and (V[i]);
-+ test_nand (V[i]);
-+ test_xor (V[i]);
-+ test_or (V[i]);
-+ }
-+
-+ return 0;
-+}
-diff --git a/gcc/testsuite/gcc.target/riscv/inline-atomics-4.c b/gcc/testsuite/gcc.target/riscv/inline-atomics-4.c
-new file mode 100644
-index 00000000000..eecfaae5cc6
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/riscv/inline-atomics-4.c
-@@ -0,0 +1,566 @@
-+/* Check all short alignments. */
-+/* Duplicate logic as libatomic/testsuite/libatomic.c/atomic-op-2.c */
-+/* Test __atomic routines for existence and proper execution on 2 byte
-+ values with each valid memory model. */
-+/* { dg-do run } */
-+/* { dg-options "-minline-atomics -Wno-address-of-packed-member" } */
-+
-+/* Test the execution of the __atomic_*OP builtin routines for a short. */
-+
-+extern void abort(void);
-+
-+short count, res;
-+const short init = ~0;
-+
-+struct A
-+{
-+ short a;
-+ short b;
-+} __attribute__ ((packed)) A;
-+
-+/* The fetch_op routines return the original value before the operation. */
-+
-+void
-+test_fetch_add (short* v)
-+{
-+ *v = 0;
-+ count = 1;
-+
-+ if (__atomic_fetch_add (v, count, __ATOMIC_RELAXED) != 0)
-+ abort ();
-+
-+ if (__atomic_fetch_add (v, 1, __ATOMIC_CONSUME) != 1)
-+ abort ();
-+
-+ if (__atomic_fetch_add (v, count, __ATOMIC_ACQUIRE) != 2)
-+ abort ();
-+
-+ if (__atomic_fetch_add (v, 1, __ATOMIC_RELEASE) != 3)
-+ abort ();
-+
-+ if (__atomic_fetch_add (v, count, __ATOMIC_ACQ_REL) != 4)
-+ abort ();
-+
-+ if (__atomic_fetch_add (v, 1, __ATOMIC_SEQ_CST) != 5)
-+ abort ();
-+}
-+
-+
-+void
-+test_fetch_sub (short* v)
-+{
-+ *v = res = 20;
-+ count = 0;
-+
-+ if (__atomic_fetch_sub (v, count + 1, __ATOMIC_RELAXED) != res--)
-+ abort ();
-+
-+ if (__atomic_fetch_sub (v, 1, __ATOMIC_CONSUME) != res--)
-+ abort ();
-+
-+ if (__atomic_fetch_sub (v, count + 1, __ATOMIC_ACQUIRE) != res--)
-+ abort ();
-+
-+ if (__atomic_fetch_sub (v, 1, __ATOMIC_RELEASE) != res--)
-+ abort ();
-+
-+ if (__atomic_fetch_sub (v, count + 1, __ATOMIC_ACQ_REL) != res--)
-+ abort ();
-+
-+ if (__atomic_fetch_sub (v, 1, __ATOMIC_SEQ_CST) != res--)
-+ abort ();
-+}
-+
-+void
-+test_fetch_and (short* v)
-+{
-+ *v = init;
-+
-+ if (__atomic_fetch_and (v, 0, __ATOMIC_RELAXED) != init)
-+ abort ();
-+
-+ if (__atomic_fetch_and (v, init, __ATOMIC_CONSUME) != 0)
-+ abort ();
-+
-+ if (__atomic_fetch_and (v, 0, __ATOMIC_ACQUIRE) != 0)
-+ abort ();
-+
-+ *v = ~*v;
-+ if (__atomic_fetch_and (v, init, __ATOMIC_RELEASE) != init)
-+ abort ();
-+
-+ if (__atomic_fetch_and (v, 0, __ATOMIC_ACQ_REL) != init)
-+ abort ();
-+
-+ if (__atomic_fetch_and (v, 0, __ATOMIC_SEQ_CST) != 0)
-+ abort ();
-+}
-+
-+void
-+test_fetch_nand (short* v)
-+{
-+ *v = init;
-+
-+ if (__atomic_fetch_nand (v, 0, __ATOMIC_RELAXED) != init)
-+ abort ();
-+
-+ if (__atomic_fetch_nand (v, init, __ATOMIC_CONSUME) != init)
-+ abort ();
-+
-+ if (__atomic_fetch_nand (v, 0, __ATOMIC_ACQUIRE) != 0 )
-+ abort ();
-+
-+ if (__atomic_fetch_nand (v, init, __ATOMIC_RELEASE) != init)
-+ abort ();
-+
-+ if (__atomic_fetch_nand (v, init, __ATOMIC_ACQ_REL) != 0)
-+ abort ();
-+
-+ if (__atomic_fetch_nand (v, 0, __ATOMIC_SEQ_CST) != init)
-+ abort ();
-+}
-+
-+void
-+test_fetch_xor (short* v)
-+{
-+ *v = init;
-+ count = 0;
-+
-+ if (__atomic_fetch_xor (v, count, __ATOMIC_RELAXED) != init)
-+ abort ();
-+
-+ if (__atomic_fetch_xor (v, ~count, __ATOMIC_CONSUME) != init)
-+ abort ();
-+
-+ if (__atomic_fetch_xor (v, 0, __ATOMIC_ACQUIRE) != 0)
-+ abort ();
-+
-+ if (__atomic_fetch_xor (v, ~count, __ATOMIC_RELEASE) != 0)
-+ abort ();
-+
-+ if (__atomic_fetch_xor (v, 0, __ATOMIC_ACQ_REL) != init)
-+ abort ();
-+
-+ if (__atomic_fetch_xor (v, ~count, __ATOMIC_SEQ_CST) != init)
-+ abort ();
-+}
-+
-+void
-+test_fetch_or (short* v)
-+{
-+ *v = 0;
-+ count = 1;
-+
-+ if (__atomic_fetch_or (v, count, __ATOMIC_RELAXED) != 0)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_fetch_or (v, 2, __ATOMIC_CONSUME) != 1)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_fetch_or (v, count, __ATOMIC_ACQUIRE) != 3)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_fetch_or (v, 8, __ATOMIC_RELEASE) != 7)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_fetch_or (v, count, __ATOMIC_ACQ_REL) != 15)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_fetch_or (v, count, __ATOMIC_SEQ_CST) != 31)
-+ abort ();
-+}
-+
-+/* The OP_fetch routines return the new value after the operation. */
-+
-+void
-+test_add_fetch (short* v)
-+{
-+ *v = 0;
-+ count = 1;
-+
-+ if (__atomic_add_fetch (v, count, __ATOMIC_RELAXED) != 1)
-+ abort ();
-+
-+ if (__atomic_add_fetch (v, 1, __ATOMIC_CONSUME) != 2)
-+ abort ();
-+
-+ if (__atomic_add_fetch (v, count, __ATOMIC_ACQUIRE) != 3)
-+ abort ();
-+
-+ if (__atomic_add_fetch (v, 1, __ATOMIC_RELEASE) != 4)
-+ abort ();
-+
-+ if (__atomic_add_fetch (v, count, __ATOMIC_ACQ_REL) != 5)
-+ abort ();
-+
-+ if (__atomic_add_fetch (v, count, __ATOMIC_SEQ_CST) != 6)
-+ abort ();
-+}
-+
-+
-+void
-+test_sub_fetch (short* v)
-+{
-+ *v = res = 20;
-+ count = 0;
-+
-+ if (__atomic_sub_fetch (v, count + 1, __ATOMIC_RELAXED) != --res)
-+ abort ();
-+
-+ if (__atomic_sub_fetch (v, 1, __ATOMIC_CONSUME) != --res)
-+ abort ();
-+
-+ if (__atomic_sub_fetch (v, count + 1, __ATOMIC_ACQUIRE) != --res)
-+ abort ();
-+
-+ if (__atomic_sub_fetch (v, 1, __ATOMIC_RELEASE) != --res)
-+ abort ();
-+
-+ if (__atomic_sub_fetch (v, count + 1, __ATOMIC_ACQ_REL) != --res)
-+ abort ();
-+
-+ if (__atomic_sub_fetch (v, count + 1, __ATOMIC_SEQ_CST) != --res)
-+ abort ();
-+}
-+
-+void
-+test_and_fetch (short* v)
-+{
-+ *v = init;
-+
-+ if (__atomic_and_fetch (v, 0, __ATOMIC_RELAXED) != 0)
-+ abort ();
-+
-+ *v = init;
-+ if (__atomic_and_fetch (v, init, __ATOMIC_CONSUME) != init)
-+ abort ();
-+
-+ if (__atomic_and_fetch (v, 0, __ATOMIC_ACQUIRE) != 0)
-+ abort ();
-+
-+ *v = ~*v;
-+ if (__atomic_and_fetch (v, init, __ATOMIC_RELEASE) != init)
-+ abort ();
-+
-+ if (__atomic_and_fetch (v, 0, __ATOMIC_ACQ_REL) != 0)
-+ abort ();
-+
-+ *v = ~*v;
-+ if (__atomic_and_fetch (v, 0, __ATOMIC_SEQ_CST) != 0)
-+ abort ();
-+}
-+
-+void
-+test_nand_fetch (short* v)
-+{
-+ *v = init;
-+
-+ if (__atomic_nand_fetch (v, 0, __ATOMIC_RELAXED) != init)
-+ abort ();
-+
-+ if (__atomic_nand_fetch (v, init, __ATOMIC_CONSUME) != 0)
-+ abort ();
-+
-+ if (__atomic_nand_fetch (v, 0, __ATOMIC_ACQUIRE) != init)
-+ abort ();
-+
-+ if (__atomic_nand_fetch (v, init, __ATOMIC_RELEASE) != 0)
-+ abort ();
-+
-+ if (__atomic_nand_fetch (v, init, __ATOMIC_ACQ_REL) != init)
-+ abort ();
-+
-+ if (__atomic_nand_fetch (v, 0, __ATOMIC_SEQ_CST) != init)
-+ abort ();
-+}
-+
-+
-+
-+void
-+test_xor_fetch (short* v)
-+{
-+ *v = init;
-+ count = 0;
-+
-+ if (__atomic_xor_fetch (v, count, __ATOMIC_RELAXED) != init)
-+ abort ();
-+
-+ if (__atomic_xor_fetch (v, ~count, __ATOMIC_CONSUME) != 0)
-+ abort ();
-+
-+ if (__atomic_xor_fetch (v, 0, __ATOMIC_ACQUIRE) != 0)
-+ abort ();
-+
-+ if (__atomic_xor_fetch (v, ~count, __ATOMIC_RELEASE) != init)
-+ abort ();
-+
-+ if (__atomic_xor_fetch (v, 0, __ATOMIC_ACQ_REL) != init)
-+ abort ();
-+
-+ if (__atomic_xor_fetch (v, ~count, __ATOMIC_SEQ_CST) != 0)
-+ abort ();
-+}
-+
-+void
-+test_or_fetch (short* v)
-+{
-+ *v = 0;
-+ count = 1;
-+
-+ if (__atomic_or_fetch (v, count, __ATOMIC_RELAXED) != 1)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_or_fetch (v, 2, __ATOMIC_CONSUME) != 3)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_or_fetch (v, count, __ATOMIC_ACQUIRE) != 7)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_or_fetch (v, 8, __ATOMIC_RELEASE) != 15)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_or_fetch (v, count, __ATOMIC_ACQ_REL) != 31)
-+ abort ();
-+
-+ count *= 2;
-+ if (__atomic_or_fetch (v, count, __ATOMIC_SEQ_CST) != 63)
-+ abort ();
-+}
-+
-+
-+/* Test the OP routines with a result which isn't used. Use both variations
-+ within each function. */
-+
-+void
-+test_add (short* v)
-+{
-+ *v = 0;
-+ count = 1;
-+
-+ __atomic_add_fetch (v, count, __ATOMIC_RELAXED);
-+ if (*v != 1)
-+ abort ();
-+
-+ __atomic_fetch_add (v, count, __ATOMIC_CONSUME);
-+ if (*v != 2)
-+ abort ();
-+
-+ __atomic_add_fetch (v, 1 , __ATOMIC_ACQUIRE);
-+ if (*v != 3)
-+ abort ();
-+
-+ __atomic_fetch_add (v, 1, __ATOMIC_RELEASE);
-+ if (*v != 4)
-+ abort ();
-+
-+ __atomic_add_fetch (v, count, __ATOMIC_ACQ_REL);
-+ if (*v != 5)
-+ abort ();
-+
-+ __atomic_fetch_add (v, count, __ATOMIC_SEQ_CST);
-+ if (*v != 6)
-+ abort ();
-+}
-+
-+
-+void
-+test_sub (short* v)
-+{
-+ *v = res = 20;
-+ count = 0;
-+
-+ __atomic_sub_fetch (v, count + 1, __ATOMIC_RELAXED);
-+ if (*v != --res)
-+ abort ();
-+
-+ __atomic_fetch_sub (v, count + 1, __ATOMIC_CONSUME);
-+ if (*v != --res)
-+ abort ();
-+
-+ __atomic_sub_fetch (v, 1, __ATOMIC_ACQUIRE);
-+ if (*v != --res)
-+ abort ();
-+
-+ __atomic_fetch_sub (v, 1, __ATOMIC_RELEASE);
-+ if (*v != --res)
-+ abort ();
-+
-+ __atomic_sub_fetch (v, count + 1, __ATOMIC_ACQ_REL);
-+ if (*v != --res)
-+ abort ();
-+
-+ __atomic_fetch_sub (v, count + 1, __ATOMIC_SEQ_CST);
-+ if (*v != --res)
-+ abort ();
-+}
-+
-+void
-+test_and (short* v)
-+{
-+ *v = init;
-+
-+ __atomic_and_fetch (v, 0, __ATOMIC_RELAXED);
-+ if (*v != 0)
-+ abort ();
-+
-+ *v = init;
-+ __atomic_fetch_and (v, init, __ATOMIC_CONSUME);
-+ if (*v != init)
-+ abort ();
-+
-+ __atomic_and_fetch (v, 0, __ATOMIC_ACQUIRE);
-+ if (*v != 0)
-+ abort ();
-+
-+ *v = ~*v;
-+ __atomic_fetch_and (v, init, __ATOMIC_RELEASE);
-+ if (*v != init)
-+ abort ();
-+
-+ __atomic_and_fetch (v, 0, __ATOMIC_ACQ_REL);
-+ if (*v != 0)
-+ abort ();
-+
-+ *v = ~*v;
-+ __atomic_fetch_and (v, 0, __ATOMIC_SEQ_CST);
-+ if (*v != 0)
-+ abort ();
-+}
-+
-+void
-+test_nand (short* v)
-+{
-+ *v = init;
-+
-+ __atomic_fetch_nand (v, 0, __ATOMIC_RELAXED);
-+ if (*v != init)
-+ abort ();
-+
-+ __atomic_fetch_nand (v, init, __ATOMIC_CONSUME);
-+ if (*v != 0)
-+ abort ();
-+
-+ __atomic_nand_fetch (v, 0, __ATOMIC_ACQUIRE);
-+ if (*v != init)
-+ abort ();
-+
-+ __atomic_nand_fetch (v, init, __ATOMIC_RELEASE);
-+ if (*v != 0)
-+ abort ();
-+
-+ __atomic_fetch_nand (v, init, __ATOMIC_ACQ_REL);
-+ if (*v != init)
-+ abort ();
-+
-+ __atomic_nand_fetch (v, 0, __ATOMIC_SEQ_CST);
-+ if (*v != init)
-+ abort ();
-+}
-+
-+
-+
-+void
-+test_xor (short* v)
-+{
-+ *v = init;
-+ count = 0;
-+
-+ __atomic_xor_fetch (v, count, __ATOMIC_RELAXED);
-+ if (*v != init)
-+ abort ();
-+
-+ __atomic_fetch_xor (v, ~count, __ATOMIC_CONSUME);
-+ if (*v != 0)
-+ abort ();
-+
-+ __atomic_xor_fetch (v, 0, __ATOMIC_ACQUIRE);
-+ if (*v != 0)
-+ abort ();
-+
-+ __atomic_fetch_xor (v, ~count, __ATOMIC_RELEASE);
-+ if (*v != init)
-+ abort ();
-+
-+ __atomic_fetch_xor (v, 0, __ATOMIC_ACQ_REL);
-+ if (*v != init)
-+ abort ();
-+
-+ __atomic_xor_fetch (v, ~count, __ATOMIC_SEQ_CST);
-+ if (*v != 0)
-+ abort ();
-+}
-+
-+void
-+test_or (short* v)
-+{
-+ *v = 0;
-+ count = 1;
-+
-+ __atomic_or_fetch (v, count, __ATOMIC_RELAXED);
-+ if (*v != 1)
-+ abort ();
-+
-+ count *= 2;
-+ __atomic_fetch_or (v, count, __ATOMIC_CONSUME);
-+ if (*v != 3)
-+ abort ();
-+
-+ count *= 2;
-+ __atomic_or_fetch (v, 4, __ATOMIC_ACQUIRE);
-+ if (*v != 7)
-+ abort ();
-+
-+ count *= 2;
-+ __atomic_fetch_or (v, 8, __ATOMIC_RELEASE);
-+ if (*v != 15)
-+ abort ();
-+
-+ count *= 2;
-+ __atomic_or_fetch (v, count, __ATOMIC_ACQ_REL);
-+ if (*v != 31)
-+ abort ();
-+
-+ count *= 2;
-+ __atomic_fetch_or (v, count, __ATOMIC_SEQ_CST);
-+ if (*v != 63)
-+ abort ();
-+}
-+
-+int
-+main () {
-+ short* V[] = {&A.a, &A.b};
-+
-+ for (int i = 0; i < 2; i++) {
-+ test_fetch_add (V[i]);
-+ test_fetch_sub (V[i]);
-+ test_fetch_and (V[i]);
-+ test_fetch_nand (V[i]);
-+ test_fetch_xor (V[i]);
-+ test_fetch_or (V[i]);
-+
-+ test_add_fetch (V[i]);
-+ test_sub_fetch (V[i]);
-+ test_and_fetch (V[i]);
-+ test_nand_fetch (V[i]);
-+ test_xor_fetch (V[i]);
-+ test_or_fetch (V[i]);
-+
-+ test_add (V[i]);
-+ test_sub (V[i]);
-+ test_and (V[i]);
-+ test_nand (V[i]);
-+ test_xor (V[i]);
-+ test_or (V[i]);
-+ }
-+
-+ return 0;
-+}
-diff --git a/gcc/testsuite/gcc.target/riscv/inline-atomics-5.c b/gcc/testsuite/gcc.target/riscv/inline-atomics-5.c
-new file mode 100644
-index 00000000000..52093894a79
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/riscv/inline-atomics-5.c
-@@ -0,0 +1,87 @@
-+/* Test __atomic routines for existence and proper execution on 1 byte
-+ values with each valid memory model. */
-+/* Duplicate logic as libatomic/testsuite/libatomic.c/atomic-compare-exchange-1.c */
-+/* { dg-do run } */
-+/* { dg-options "-minline-atomics" } */
-+
-+/* Test the execution of the __atomic_compare_exchange_n builtin for a char. */
-+
-+extern void abort(void);
-+
-+char v = 0;
-+char expected = 0;
-+char max = ~0;
-+char desired = ~0;
-+char zero = 0;
-+
-+#define STRONG 0
-+#define WEAK 1
-+
-+int
-+main ()
-+{
-+
-+ if (!__atomic_compare_exchange_n (&v, &expected, max, STRONG , __ATOMIC_RELAXED, __ATOMIC_RELAXED))
-+ abort ();
-+ if (expected != 0)
-+ abort ();
-+
-+ if (__atomic_compare_exchange_n (&v, &expected, 0, STRONG , __ATOMIC_ACQUIRE, __ATOMIC_RELAXED))
-+ abort ();
-+ if (expected != max)
-+ abort ();
-+
-+ if (!__atomic_compare_exchange_n (&v, &expected, 0, STRONG , __ATOMIC_RELEASE, __ATOMIC_ACQUIRE))
-+ abort ();
-+ if (expected != max)
-+ abort ();
-+ if (v != 0)
-+ abort ();
-+
-+ if (__atomic_compare_exchange_n (&v, &expected, desired, WEAK, __ATOMIC_ACQ_REL, __ATOMIC_ACQUIRE))
-+ abort ();
-+ if (expected != 0)
-+ abort ();
-+
-+ if (!__atomic_compare_exchange_n (&v, &expected, desired, STRONG , __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST))
-+ abort ();
-+ if (expected != 0)
-+ abort ();
-+ if (v != max)
-+ abort ();
-+
-+ /* Now test the generic version. */
-+
-+ v = 0;
-+
-+ if (!__atomic_compare_exchange (&v, &expected, &max, STRONG, __ATOMIC_RELAXED, __ATOMIC_RELAXED))
-+ abort ();
-+ if (expected != 0)
-+ abort ();
-+
-+ if (__atomic_compare_exchange (&v, &expected, &zero, STRONG , __ATOMIC_ACQUIRE, __ATOMIC_RELAXED))
-+ abort ();
-+ if (expected != max)
-+ abort ();
-+
-+ if (!__atomic_compare_exchange (&v, &expected, &zero, STRONG , __ATOMIC_RELEASE, __ATOMIC_ACQUIRE))
-+ abort ();
-+ if (expected != max)
-+ abort ();
-+ if (v != 0)
-+ abort ();
-+
-+ if (__atomic_compare_exchange (&v, &expected, &desired, WEAK, __ATOMIC_ACQ_REL, __ATOMIC_ACQUIRE))
-+ abort ();
-+ if (expected != 0)
-+ abort ();
-+
-+ if (!__atomic_compare_exchange (&v, &expected, &desired, STRONG , __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST))
-+ abort ();
-+ if (expected != 0)
-+ abort ();
-+ if (v != max)
-+ abort ();
-+
-+ return 0;
-+}
-diff --git a/gcc/testsuite/gcc.target/riscv/inline-atomics-6.c b/gcc/testsuite/gcc.target/riscv/inline-atomics-6.c
-new file mode 100644
-index 00000000000..8fee8c44811
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/riscv/inline-atomics-6.c
-@@ -0,0 +1,87 @@
-+/* Test __atomic routines for existence and proper execution on 2 byte
-+ values with each valid memory model. */
-+/* Duplicate logic as libatomic/testsuite/libatomic.c/atomic-compare-exchange-2.c */
-+/* { dg-do run } */
-+/* { dg-options "-minline-atomics" } */
-+
-+/* Test the execution of the __atomic_compare_exchange_n builtin for a short. */
-+
-+extern void abort(void);
-+
-+short v = 0;
-+short expected = 0;
-+short max = ~0;
-+short desired = ~0;
-+short zero = 0;
-+
-+#define STRONG 0
-+#define WEAK 1
-+
-+int
-+main ()
-+{
-+
-+ if (!__atomic_compare_exchange_n (&v, &expected, max, STRONG , __ATOMIC_RELAXED, __ATOMIC_RELAXED))
-+ abort ();
-+ if (expected != 0)
-+ abort ();
-+
-+ if (__atomic_compare_exchange_n (&v, &expected, 0, STRONG , __ATOMIC_ACQUIRE, __ATOMIC_RELAXED))
-+ abort ();
-+ if (expected != max)
-+ abort ();
-+
-+ if (!__atomic_compare_exchange_n (&v, &expected, 0, STRONG , __ATOMIC_RELEASE, __ATOMIC_ACQUIRE))
-+ abort ();
-+ if (expected != max)
-+ abort ();
-+ if (v != 0)
-+ abort ();
-+
-+ if (__atomic_compare_exchange_n (&v, &expected, desired, WEAK, __ATOMIC_ACQ_REL, __ATOMIC_ACQUIRE))
-+ abort ();
-+ if (expected != 0)
-+ abort ();
-+
-+ if (!__atomic_compare_exchange_n (&v, &expected, desired, STRONG , __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST))
-+ abort ();
-+ if (expected != 0)
-+ abort ();
-+ if (v != max)
-+ abort ();
-+
-+ /* Now test the generic version. */
-+
-+ v = 0;
-+
-+ if (!__atomic_compare_exchange (&v, &expected, &max, STRONG, __ATOMIC_RELAXED, __ATOMIC_RELAXED))
-+ abort ();
-+ if (expected != 0)
-+ abort ();
-+
-+ if (__atomic_compare_exchange (&v, &expected, &zero, STRONG , __ATOMIC_ACQUIRE, __ATOMIC_RELAXED))
-+ abort ();
-+ if (expected != max)
-+ abort ();
-+
-+ if (!__atomic_compare_exchange (&v, &expected, &zero, STRONG , __ATOMIC_RELEASE, __ATOMIC_ACQUIRE))
-+ abort ();
-+ if (expected != max)
-+ abort ();
-+ if (v != 0)
-+ abort ();
-+
-+ if (__atomic_compare_exchange (&v, &expected, &desired, WEAK, __ATOMIC_ACQ_REL, __ATOMIC_ACQUIRE))
-+ abort ();
-+ if (expected != 0)
-+ abort ();
-+
-+ if (!__atomic_compare_exchange (&v, &expected, &desired, STRONG , __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST))
-+ abort ();
-+ if (expected != 0)
-+ abort ();
-+ if (v != max)
-+ abort ();
-+
-+ return 0;
-+}
-diff --git a/gcc/testsuite/gcc.target/riscv/inline-atomics-7.c b/gcc/testsuite/gcc.target/riscv/inline-atomics-7.c
-new file mode 100644
-index 00000000000..24c344c0ce3
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/riscv/inline-atomics-7.c
-@@ -0,0 +1,69 @@
-+/* Test __atomic routines for existence and proper execution on 1 byte
-+ values with each valid memory model. */
-+/* Duplicate logic as libatomic/testsuite/libatomic.c/atomic-exchange-1.c */
-+/* { dg-do run } */
-+/* { dg-options "-minline-atomics" } */
-+
-+/* Test the execution of the __atomic_exchange_n builtin for a char. */
-+
-+extern void abort(void);
-+
-+char v, count, ret;
-+
-+int
-+main ()
-+{
-+ v = 0;
-+ count = 0;
-+
-+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELAXED) != count)
-+ abort ();
-+ count++;
-+
-+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQUIRE) != count)
-+ abort ();
-+ count++;
-+
-+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELEASE) != count)
-+ abort ();
-+ count++;
-+
-+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQ_REL) != count)
-+ abort ();
-+ count++;
-+
-+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_SEQ_CST) != count)
-+ abort ();
-+ count++;
-+
-+ /* Now test the generic version. */
-+
-+ count++;
-+
-+ __atomic_exchange (&v, &count, &ret, __ATOMIC_RELAXED);
-+ if (ret != count - 1 || v != count)
-+ abort ();
-+ count++;
-+
-+ __atomic_exchange (&v, &count, &ret, __ATOMIC_ACQUIRE);
-+ if (ret != count - 1 || v != count)
-+ abort ();
-+ count++;
-+
-+ __atomic_exchange (&v, &count, &ret, __ATOMIC_RELEASE);
-+ if (ret != count - 1 || v != count)
-+ abort ();
-+ count++;
-+
-+ __atomic_exchange (&v, &count, &ret, __ATOMIC_ACQ_REL);
-+ if (ret != count - 1 || v != count)
-+ abort ();
-+ count++;
-+
-+ __atomic_exchange (&v, &count, &ret, __ATOMIC_SEQ_CST);
-+ if (ret != count - 1 || v != count)
-+ abort ();
-+ count++;
-+
-+ return 0;
-+}
-diff --git a/gcc/testsuite/gcc.target/riscv/inline-atomics-8.c b/gcc/testsuite/gcc.target/riscv/inline-atomics-8.c
-new file mode 100644
-index 00000000000..edc212df04e
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/riscv/inline-atomics-8.c
-@@ -0,0 +1,69 @@
-+/* Test __atomic routines for existence and proper execution on 2 byte
-+ values with each valid memory model. */
-+/* Duplicate logic as libatomic/testsuite/libatomic.c/atomic-exchange-2.c */
-+/* { dg-do run } */
-+/* { dg-options "-minline-atomics" } */
-+
-+/* Test the execution of the __atomic_X builtin for a short. */
-+
-+extern void abort(void);
-+
-+short v, count, ret;
-+
-+int
-+main ()
-+{
-+ v = 0;
-+ count = 0;
-+
-+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELAXED) != count)
-+ abort ();
-+ count++;
-+
-+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQUIRE) != count)
-+ abort ();
-+ count++;
-+
-+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_RELEASE) != count)
-+ abort ();
-+ count++;
-+
-+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_ACQ_REL) != count)
-+ abort ();
-+ count++;
-+
-+ if (__atomic_exchange_n (&v, count + 1, __ATOMIC_SEQ_CST) != count)
-+ abort ();
-+ count++;
-+
-+ /* Now test the generic version. */
-+
-+ count++;
-+
-+ __atomic_exchange (&v, &count, &ret, __ATOMIC_RELAXED);
-+ if (ret != count - 1 || v != count)
-+ abort ();
-+ count++;
-+
-+ __atomic_exchange (&v, &count, &ret, __ATOMIC_ACQUIRE);
-+ if (ret != count - 1 || v != count)
-+ abort ();
-+ count++;
-+
-+ __atomic_exchange (&v, &count, &ret, __ATOMIC_RELEASE);
-+ if (ret != count - 1 || v != count)
-+ abort ();
-+ count++;
-+
-+ __atomic_exchange (&v, &count, &ret, __ATOMIC_ACQ_REL);
-+ if (ret != count - 1 || v != count)
-+ abort ();
-+ count++;
-+
-+ __atomic_exchange (&v, &count, &ret, __ATOMIC_SEQ_CST);
-+ if (ret != count - 1 || v != count)
-+ abort ();
-+ count++;
-+
-+ return 0;
-+}
-diff --git a/libgcc/config/riscv/atomic.c b/libgcc/config/riscv/atomic.c
-index 69f53623509..573d163ea04 100644
---- a/libgcc/config/riscv/atomic.c
-+++ b/libgcc/config/riscv/atomic.c
-@@ -30,6 +30,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- #define INVERT "not %[tmp1], %[tmp1]\n\t"
- #define DONT_INVERT ""
-
-+/* Logic duplicated in gcc/gcc/config/riscv/sync.md for use when inlining is enabled */
-+
- #define GENERATE_FETCH_AND_OP(type, size, opname, insn, invert, cop) \
- type __sync_fetch_and_ ## opname ## _ ## size (type *p, type v) \
- { \
---
-2.39.1
-
diff --git a/gcc.spec b/gcc.spec
index 2a2ce56..664d00c 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -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 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 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 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 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 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 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 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
+- allow for the optional removal of tzdata
+ - see https://fedoraproject.org/wiki/Changes/AllowRemovalOfTzdata
+
+* Fri Jul 28 2023 Jakub Jelinek 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 - 13.1.1-4.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
+
+* Wed Jun 14 2023 Jakub Jelinek 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 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 13.1.1-2
- update from releases/gcc-13 branch
diff --git a/gcc13-fortran-fdec-non-logical-if.patch b/gcc13-fortran-fdec-non-logical-if.patch
deleted file mode 100644
index a3a830c..0000000
--- a/gcc13-fortran-fdec-non-logical-if.patch
+++ /dev/null
@@ -1,378 +0,0 @@
-From cc87ddb841017bb0976b05091733609ee17d7f05 Mon Sep 17 00:00:00 2001
-From: Mark Eggleston
-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
-+! and Jeff Law
-+! Modified by Mark Eggleston
-+!
-+ 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
-+! and Jeff Law
-+! Modified by Mark Eggleston
-+!
-+ 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
-+! and Jeff Law
-+! Modified by Mark Eggleston
-+!
-+ 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
-+! and Jeff Law
-+! Modified by Mark Eggleston
-+!
-+ 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
-+! and Jeff Law
-+! Modified by Mark Eggleston
-+!
-+ 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
-+! and Jeff Law
-+! Modified by Mark Eggleston
-+!
-+ 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
-
diff --git a/gcc13-fortran-fdec-override-kind.patch b/gcc13-fortran-fdec-override-kind.patch
deleted file mode 100644
index 370fa56..0000000
--- a/gcc13-fortran-fdec-override-kind.patch
+++ /dev/null
@@ -1,588 +0,0 @@
-From 786869fd62813e80da9b6545a295d53c36275c19 Mon Sep 17 00:00:00 2001
-From: Mark Eggleston
-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
-
-Now rejects invalid kind parameters and prints error messages:
-
- INTEGER X*3
-
-caused an internal compiler error.
-
-Contributed by Mark Eggleston
----
- 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
-+! Modified by Mark Eggleston
-+!
-+ 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
-+! Modified by Mark Eggleston
-+!
-+ 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
-+! Modified by Mark Eggleston
-+!
-+ 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
-+!
-+ 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
-+!
-+ 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
-+!
-+ 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
-+!
-+ 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
-+!
-+ 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
-+!
-+ 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
-+!
-+ 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
-+!
-+ 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
-
diff --git a/gcc13-fortran-flogical-as-integer.patch b/gcc13-fortran-flogical-as-integer.patch
deleted file mode 100644
index 28df5e1..0000000
--- a/gcc13-fortran-flogical-as-integer.patch
+++ /dev/null
@@ -1,305 +0,0 @@
-From 9b45f3063dfd2b893e7963a4828c1b0afecdc68a Mon Sep 17 00:00:00 2001
-From: Mark Eggleston
-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
-+! Modified for -flogical-as-integer by Mark Eggleston
-+!
-+!
-+ 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
-+!
-+!
-+ 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
-
diff --git a/gcc13-libstdc++-docs.patch b/gcc13-libstdc++-docs.patch
index 6dffae6..ce94f5d 100644
--- a/gcc13-libstdc++-docs.patch
+++ b/gcc13-libstdc++-docs.patch
@@ -4,7 +4,7 @@
FSF
-+ Release 13.1.1
++ Release 13.2.1
+
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation
@@ -17,7 +17,7 @@
- The API documentation, rendered into HTML, can be viewed online
+ The API documentation, rendered into HTML, can be viewed locally
-+ for the 13.1.1 release,
++ for the 13.2.1 release,
+ online
for each GCC release
and
diff --git a/gcc13-libtool-no-rpath.patch b/gcc13-libtool-no-rpath.patch
index 8429a4c..466c661 100644
--- a/gcc13-libtool-no-rpath.patch
+++ b/gcc13-libtool-no-rpath.patch
@@ -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
diff --git a/gcc13-pr110792.patch b/gcc13-pr110792.patch
new file mode 100644
index 0000000..ce129f9
--- /dev/null
+++ b/gcc13-pr110792.patch
@@ -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 "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
+
+gcc/testsuite/ChangeLog
+ PR target/110792
+ * gcc.target/i386/pr110792.c: Remove dg-final scan-assembler-not.
+
+2023-08-03 Roger Sayle
+
+gcc/ChangeLog
+ PR target/110792
+ * config/i386/i386.md (ti3): For rotations by 64 bits
+ place operand in a register before gen_64ti2_doubleword.
+ (di3): Likewise, for rotations by 32 bits, place
+ operand in a register before gen_32di2_doubleword.
+ (32di2_doubleword): Constrain operand to be in register.
+ (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 "ti3"
+ emit_insn (gen_ix86_ti3_doubleword
+ (operands[0], operands[1], operands[2]));
+ else if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 64)
+- emit_insn (gen_64ti2_doubleword (operands[0], operands[1]));
++ {
++ operands[1] = force_reg (TImode, operands[1]);
++ emit_insn (gen_64ti2_doubleword (operands[0], operands[1]));
++ }
+ else
+ {
+ rtx amount = force_reg (QImode, operands[2]);
+@@ -15376,7 +15379,10 @@ (define_expand "di3"
+ emit_insn (gen_ix86_di3_doubleword
+ (operands[0], operands[1], operands[2]));
+ else if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 32)
+- emit_insn (gen_32di2_doubleword (operands[0], operands[1]));
++ {
++ operands[1] = force_reg (DImode, operands[1]);
++ emit_insn (gen_32di2_doubleword (operands[0], operands[1]));
++ }
+ else
+ FAIL;
+
+@@ -15544,8 +15550,8 @@ (define_insn_and_split "ix86_rotr3_doubleword"
+ })
+
+ (define_insn_and_split "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 "32di2_doubleword"
+ })
+
+ (define_insn_and_split "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
++inline T rotr(T input)
++{
++ return static_cast((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;
++}
diff --git a/plans/ci.fmf b/plans/ci.fmf
index 13b60db..b6a344d 100644
--- a/plans/ci.fmf
+++ b/plans/ci.fmf
@@ -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
diff --git a/plans/prepare.sh b/plans/prepare.sh
deleted file mode 100755
index 8ffb6ef..0000000
--- a/plans/prepare.sh
+++ /dev/null
@@ -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 "^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^"
diff --git a/plans/provide_secondary_arch_rpms.sh b/plans/provide_secondary_arch_rpms.sh
new file mode 100755
index 0000000..f26a5ab
--- /dev/null
+++ b/plans/provide_secondary_arch_rpms.sh
@@ -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 .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 "^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^"
diff --git a/sources b/sources
index 7a82c78..9509f03 100644
--- a/sources
+++ b/sources
@@ -1,4 +1,4 @@
-SHA512 (gcc-13.1.1-20230511.tar.xz) = 0ba5b1db652992b1abd356ac36a48c9db4ecd01c751ae3488dd8680199e678845d59bfb4b8d747b91bca258ea8d5a2c274f3bbb2039dd4de2f65942dd902a616
+SHA512 (gcc-13.2.1-20231205.tar.xz) = f132a2d35d6ea0b0d82043870f1c9f60dda119e63df6833b16d20e2c93e2978f62698d4cc72a6e2eefbaeded0683107de9ebeb93923b96c57dcd612504aa6a1b
SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95
SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983
-SHA512 (nvptx-tools-93e00909ceb9cbbc104f0fcba56c0361ffb3ca4b.tar.xz) = c719fad8689b2b6f3c888d0308604ddef884037d71ec3e755c68052d30075a181c29358fda516833ace437921b17602b147be7886317be94ec9736faa8cb52be
+SHA512 (nvptx-tools-aa3404ad5a496cda5d79a50bedb1344fd63e8763.tar.xz) = 33a024326426375533cb5dd9b68b2508f37540be418d2506bfa19a5f5866485e9af150469064e9059b68136ad8cb080b3b12e7eb5c6b7d1288cf6bfb3f6bb5d0
diff --git a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/abs.c b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/abs.c
deleted file mode 100644
index 801bda0..0000000
--- a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/abs.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include
-#include
-
-int
-main ()
-{
- int i = 2;
- if (-10 * abs (i - 1) == 10 * abs (i - 1))
- return 1;
-
- return 0;
-}
diff --git a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf
deleted file mode 100644
index 81a2b4a..0000000
--- a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf
+++ /dev/null
@@ -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
diff --git a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/runtest.sh b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/runtest.sh
deleted file mode 100755
index 695c9fc..0000000
--- a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/runtest.sh
+++ /dev/null
@@ -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 .
-#
-# Author: Michal Nowak
-# Marek Polacek
-
-# 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
diff --git a/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf b/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf
deleted file mode 100644
index 558554d..0000000
--- a/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf
+++ /dev/null
@@ -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
diff --git a/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/runtest.sh b/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/runtest.sh
deleted file mode 100755
index 62d03df..0000000
--- a/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/runtest.sh
+++ /dev/null
@@ -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 .
-#
-# Author: Michal Nowak
-# Marek Polacek
-
-# 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
diff --git a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/abc.f90 b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/abc.f90
deleted file mode 100644
index c9af75f..0000000
--- a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/abc.f90
+++ /dev/null
@@ -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
-
diff --git a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf
deleted file mode 100644
index 5f9ce34..0000000
--- a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf
+++ /dev/null
@@ -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
diff --git a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/runtest.sh b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/runtest.sh
deleted file mode 100755
index 741279d..0000000
--- a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/runtest.sh
+++ /dev/null
@@ -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 .
-#
-# Author: Michal Nowak
-# Marek Polacek
-
-# 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
diff --git a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/builtin.c b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/builtin.c
deleted file mode 100644
index 64449ae..0000000
--- a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/builtin.c
+++ /dev/null
@@ -1,29 +0,0 @@
-#include
-
-/* 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;
-}
diff --git a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf
deleted file mode 100644
index 8f47b12..0000000
--- a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf
+++ /dev/null
@@ -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
diff --git a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/runtest.sh b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/runtest.sh
deleted file mode 100755
index 8b38afd..0000000
--- a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/runtest.sh
+++ /dev/null
@@ -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
-# Marek Polacek
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# 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
diff --git a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/foo.java b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/foo.java
deleted file mode 100644
index bc72835..0000000
--- a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/foo.java
+++ /dev/null
@@ -1,5 +0,0 @@
-public class foo {
- public static void main(String[] args) {
- System.loadLibrary("foolib");
- }
-}
diff --git a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/main.fmf b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/main.fmf
deleted file mode 100644
index b121552..0000000
--- a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/main.fmf
+++ /dev/null
@@ -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
diff --git a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/runtest.sh b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/runtest.sh
deleted file mode 100755
index 73e914d..0000000
--- a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/runtest.sh
+++ /dev/null
@@ -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 .
-#
-# Author: Michal Nowak
-# Marek Polacek
-
-# 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
diff --git a/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf b/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf
deleted file mode 100644
index f44417a..0000000
--- a/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf
+++ /dev/null
@@ -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
-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
diff --git a/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/runtest.sh b/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/runtest.sh
deleted file mode 100755
index 8ff645e..0000000
--- a/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/runtest.sh
+++ /dev/null
@@ -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
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# 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 <
-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
diff --git a/tests/Regression/bz1815504-Regression-in-the-line-information-debug/main.fmf b/tests/Regression/bz1815504-Regression-in-the-line-information-debug/main.fmf
deleted file mode 100644
index 82cdc4e..0000000
--- a/tests/Regression/bz1815504-Regression-in-the-line-information-debug/main.fmf
+++ /dev/null
@@ -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
diff --git a/tests/Regression/bz1815504-Regression-in-the-line-information-debug/runtest.sh b/tests/Regression/bz1815504-Regression-in-the-line-information-debug/runtest.sh
deleted file mode 100755
index 585e76c..0000000
--- a/tests/Regression/bz1815504-Regression-in-the-line-information-debug/runtest.sh
+++ /dev/null
@@ -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á
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# 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
diff --git a/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/main.fmf b/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/main.fmf
deleted file mode 100644
index 1c87a12..0000000
--- a/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/main.fmf
+++ /dev/null
@@ -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á
-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
diff --git a/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/runtest.sh b/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/runtest.sh
deleted file mode 100755
index 84cae8f..0000000
--- a/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/runtest.sh
+++ /dev/null
@@ -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á
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# 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
diff --git a/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/x.c b/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/x.c
deleted file mode 100644
index 64fffec..0000000
--- a/tests/Regression/bz1852781-Compiling-with-flto-and-g-removes-CET-support/x.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include
-
-int
-main ()
-{
- printf ("hello\n");
- return 0;
-}
diff --git a/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/main.fmf b/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/main.fmf
deleted file mode 100644
index 1540389..0000000
--- a/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/main.fmf
+++ /dev/null
@@ -1,17 +0,0 @@
-summary: Test for BZ#1853900 (typeinfo for stdcodecvt_utf8 not found
- Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1853900
-contact: Alexandra Hájková
-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
diff --git a/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/runtest.sh b/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/runtest.sh
deleted file mode 100755
index a6eb4ed..0000000
--- a/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/runtest.sh
+++ /dev/null
@@ -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
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# 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
diff --git a/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/test.cc b/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/test.cc
deleted file mode 100644
index 075633f..0000000
--- a/tests/Regression/bz1853900-typeinfo-for-std-codecvt-utf8-wchar-t-1114111ul/test.cc
+++ /dev/null
@@ -1,7 +0,0 @@
-#include
-
-namespace fs = std::filesystem;
-int main() {
- fs::create_directory("sandbox");
- fs::remove_all("sandbox");
-}
diff --git a/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/main.fmf b/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/main.fmf
deleted file mode 100644
index 8167f92..0000000
--- a/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/main.fmf
+++ /dev/null
@@ -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á
-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
diff --git a/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/runtest.sh b/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/runtest.sh
deleted file mode 100755
index 83c42ef..0000000
--- a/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/runtest.sh
+++ /dev/null
@@ -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á
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# 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
diff --git a/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/tst.c b/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/tst.c
deleted file mode 100644
index 741559e..0000000
--- a/tests/Regression/bz1878841-GOMP-parallel-loop-nonmonotonic-dynamic-and/tst.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include
-int main ()
-{
- #pragma omp parallel for schedule(dynamic)
- for (int i = 0; i < 10; i++);
-}
diff --git a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/b.gdb b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/b.gdb
deleted file mode 100644
index 341301d..0000000
--- a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/b.gdb
+++ /dev/null
@@ -1,2 +0,0 @@
-info functions foo
-q
diff --git a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/main.fmf b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/main.fmf
deleted file mode 100644
index 7054cbd..0000000
--- a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/main.fmf
+++ /dev/null
@@ -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á
-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
diff --git a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/runtest.sh b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/runtest.sh
deleted file mode 100755
index f2dd2ca..0000000
--- a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/runtest.sh
+++ /dev/null
@@ -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á
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# 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
diff --git a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/test.c b/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/test.c
deleted file mode 100644
index 3de5962..0000000
--- a/tests/Regression/bz1893340-Variadic-arguments-are-missing-from-debugging-data/test.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include
-void foo(int args, ...) {
- va_list ap;
- va_start(ap, args);
- va_end(ap);
-}
diff --git a/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/main.fmf b/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/main.fmf
deleted file mode 100644
index c1da31b..0000000
--- a/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/main.fmf
+++ /dev/null
@@ -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á
-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
diff --git a/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/runtest.sh b/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/runtest.sh
deleted file mode 100755
index a23ce5c..0000000
--- a/tests/Regression/bz1896093-Compiling-with-flto-auto-fails-if-make-is-not/runtest.sh
+++ /dev/null
@@ -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á
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# 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
diff --git a/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/alloc1.f90 b/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/alloc1.f90
deleted file mode 100644
index 8765255..0000000
--- a/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/alloc1.f90
+++ /dev/null
@@ -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
diff --git a/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/main.fmf b/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/main.fmf
deleted file mode 100644
index d6b5ead..0000000
--- a/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/main.fmf
+++ /dev/null
@@ -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á
-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
diff --git a/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/runtest.sh b/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/runtest.sh
deleted file mode 100755
index e635213..0000000
--- a/tests/Regression/bz1927579-libgfortran-seems-to-be-missing/runtest.sh
+++ /dev/null
@@ -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á
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# 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
diff --git a/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/main.fmf b/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/main.fmf
deleted file mode 100644
index 4cfef47..0000000
--- a/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/main.fmf
+++ /dev/null
@@ -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á
-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
diff --git a/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/runtest.sh b/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/runtest.sh
deleted file mode 100755
index 1d29c6c..0000000
--- a/tests/Regression/bz1939638-gcc-toolset-10-libasan-devel-depends-on-the-wrong/runtest.sh
+++ /dev/null
@@ -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á
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# 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
diff --git a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf
deleted file mode 100644
index fac6ddb..0000000
--- a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf
+++ /dev/null
@@ -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
-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
diff --git a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/reproducer.cc b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/reproducer.cc
deleted file mode 100644
index 6ebd8e0..0000000
--- a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/reproducer.cc
+++ /dev/null
@@ -1,14 +0,0 @@
-#include
-
-struct T {
- unsigned a;
- float b {8.};
-};
-
-int main()
-{
- T t = {1};
- std::vector 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 ();
-}
diff --git a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh
deleted file mode 100755
index 9dd4ea3..0000000
--- a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh
+++ /dev/null
@@ -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
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# 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
diff --git a/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/main.fmf b/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/main.fmf
deleted file mode 100644
index c699de0..0000000
--- a/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/main.fmf
+++ /dev/null
@@ -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
-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
diff --git a/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/reproducer.cc b/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/reproducer.cc
deleted file mode 100644
index 40b0c81..0000000
--- a/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/reproducer.cc
+++ /dev/null
@@ -1,12 +0,0 @@
-#include
-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(); }
diff --git a/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/runtest.sh b/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/runtest.sh
deleted file mode 100755
index d8d69d0..0000000
--- a/tests/Regression/bz1965951-Wrong-code-regression-starting-with-gcc-8-5/runtest.sh
+++ /dev/null
@@ -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
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# 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
diff --git a/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf b/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf
deleted file mode 100644
index 8f8346f..0000000
--- a/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf
+++ /dev/null
@@ -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
diff --git a/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/runtest.sh b/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/runtest.sh
deleted file mode 100755
index 0003300..0000000
--- a/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/runtest.sh
+++ /dev/null
@@ -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
diff --git a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/f.cc b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/f.cc
deleted file mode 100644
index 7b815cd..0000000
--- a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/f.cc
+++ /dev/null
@@ -1,15 +0,0 @@
-template int func (void);
-
-template struct Foo
-{
- static const unsigned int a = sizeof (T);
-
- //enum { b = a };
-
- enum
- {
- c = sizeof (func < (a == 0) > ())
- };
-};
-
-Foo x;
diff --git a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf
deleted file mode 100644
index 4ad6875..0000000
--- a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf
+++ /dev/null
@@ -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
diff --git a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/runtest.sh b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/runtest.sh
deleted file mode 100755
index 8f50b77..0000000
--- a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/runtest.sh
+++ /dev/null
@@ -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
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# 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
diff --git a/tests/Regression/unused_parameter_warning/main.fmf b/tests/Regression/unused_parameter_warning/main.fmf
deleted file mode 100644
index b589e98..0000000
--- a/tests/Regression/unused_parameter_warning/main.fmf
+++ /dev/null
@@ -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
diff --git a/tests/Regression/unused_parameter_warning/runtest.sh b/tests/Regression/unused_parameter_warning/runtest.sh
deleted file mode 100755
index 4a5d2fb..0000000
--- a/tests/Regression/unused_parameter_warning/runtest.sh
+++ /dev/null
@@ -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
-# Maintainer: Marek Polacek
-
-
-# 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
diff --git a/tests/Regression/unused_parameter_warning/test.cpp b/tests/Regression/unused_parameter_warning/test.cpp
deleted file mode 100644
index 15d375b..0000000
--- a/tests/Regression/unused_parameter_warning/test.cpp
+++ /dev/null
@@ -1,2 +0,0 @@
-#include
-int main() {}
diff --git a/tests/Sanity/compile-rpm/main.fmf b/tests/Sanity/compile-rpm/main.fmf
deleted file mode 100644
index 4685e4a..0000000
--- a/tests/Sanity/compile-rpm/main.fmf
+++ /dev/null
@@ -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
diff --git a/tests/Sanity/compile-rpm/runtest.sh b/tests/Sanity/compile-rpm/runtest.sh
deleted file mode 100755
index 5f68e75..0000000
--- a/tests/Sanity/compile-rpm/runtest.sh
+++ /dev/null
@@ -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
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# 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
diff --git a/tests/Sanity/libitm-smoke/bins_aarch64.tar.gz b/tests/Sanity/libitm-smoke/bins_aarch64.tar.gz
deleted file mode 100644
index d528f03..0000000
Binary files a/tests/Sanity/libitm-smoke/bins_aarch64.tar.gz and /dev/null differ
diff --git a/tests/Sanity/libitm-smoke/bins_i686.tar.gz b/tests/Sanity/libitm-smoke/bins_i686.tar.gz
deleted file mode 100644
index ce0e948..0000000
Binary files a/tests/Sanity/libitm-smoke/bins_i686.tar.gz and /dev/null differ
diff --git a/tests/Sanity/libitm-smoke/bins_ppc64.tar.gz b/tests/Sanity/libitm-smoke/bins_ppc64.tar.gz
deleted file mode 100644
index 0589c6a..0000000
Binary files a/tests/Sanity/libitm-smoke/bins_ppc64.tar.gz and /dev/null differ
diff --git a/tests/Sanity/libitm-smoke/bins_ppc64le.tar.gz b/tests/Sanity/libitm-smoke/bins_ppc64le.tar.gz
deleted file mode 100644
index b8e9215..0000000
Binary files a/tests/Sanity/libitm-smoke/bins_ppc64le.tar.gz and /dev/null differ
diff --git a/tests/Sanity/libitm-smoke/bins_s390x.tar.gz b/tests/Sanity/libitm-smoke/bins_s390x.tar.gz
deleted file mode 100644
index 742a917..0000000
Binary files a/tests/Sanity/libitm-smoke/bins_s390x.tar.gz and /dev/null differ
diff --git a/tests/Sanity/libitm-smoke/bins_x86_64.tar.gz b/tests/Sanity/libitm-smoke/bins_x86_64.tar.gz
deleted file mode 100644
index e884185..0000000
Binary files a/tests/Sanity/libitm-smoke/bins_x86_64.tar.gz and /dev/null differ
diff --git a/tests/Sanity/libitm-smoke/main.fmf b/tests/Sanity/libitm-smoke/main.fmf
deleted file mode 100644
index 06bf77d..0000000
--- a/tests/Sanity/libitm-smoke/main.fmf
+++ /dev/null
@@ -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
-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
diff --git a/tests/Sanity/libitm-smoke/runtest.sh b/tests/Sanity/libitm-smoke/runtest.sh
deleted file mode 100755
index 8c78f78..0000000
--- a/tests/Sanity/libitm-smoke/runtest.sh
+++ /dev/null
@@ -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
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# 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
diff --git a/tests/Sanity/rebuild-binutils/main.fmf b/tests/Sanity/rebuild-binutils/main.fmf
deleted file mode 100644
index 8c05e0a..0000000
--- a/tests/Sanity/rebuild-binutils/main.fmf
+++ /dev/null
@@ -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
diff --git a/tests/Sanity/rebuild-binutils/runtest.sh b/tests/Sanity/rebuild-binutils/runtest.sh
deleted file mode 100755
index 714ac4d..0000000
--- a/tests/Sanity/rebuild-binutils/runtest.sh
+++ /dev/null
@@ -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
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# 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
diff --git a/tests/Sanity/rebuild-glibc/main.fmf b/tests/Sanity/rebuild-glibc/main.fmf
deleted file mode 100644
index ea649f0..0000000
--- a/tests/Sanity/rebuild-glibc/main.fmf
+++ /dev/null
@@ -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
diff --git a/tests/Sanity/rebuild-glibc/runtest.sh b/tests/Sanity/rebuild-glibc/runtest.sh
deleted file mode 100755
index 52255c5..0000000
--- a/tests/Sanity/rebuild-glibc/runtest.sh
+++ /dev/null
@@ -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 .
-#
-# Author: Michal Nowak
-# Rewrite: Marek Polacek
-
-# 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 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
diff --git a/tests/Sanity/test-m32-m64-options/clear_cache.c b/tests/Sanity/test-m32-m64-options/clear_cache.c
deleted file mode 100644
index b10479f..0000000
--- a/tests/Sanity/test-m32-m64-options/clear_cache.c
+++ /dev/null
@@ -1,7 +0,0 @@
-int
-main (void)
-{
- char *mem = __builtin_alloca (40);
- __builtin___clear_cache (mem, mem + 40);
- return 0;
-}
diff --git a/tests/Sanity/test-m32-m64-options/cpp11.cpp b/tests/Sanity/test-m32-m64-options/cpp11.cpp
deleted file mode 100644
index 0d57b57..0000000
--- a/tests/Sanity/test-m32-m64-options/cpp11.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-template
-class X
-{
- T p;
-public:
- template auto f() -> decltype(+p) { return p; }
-};
-
-struct A
-{
- int i = 42;
-};
-
-struct B
-{
- int i = 42;
- B() { }
- B(int i): i(i) { }
-};
-
-template
-struct C
-{
- T m = t;
-};
-
-template
-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().f();
- 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 c1;
- if (c1.m != 3) return 5;
- C c2 {};
- if (c2.m != 5) return 6;
-
- D d1;
- if (d1.m != 3) return 7;
- D d2 (5) ;
- if (d2.m != 5) return 8;
-
- return 0;
-}
diff --git a/tests/Sanity/test-m32-m64-options/hello.c b/tests/Sanity/test-m32-m64-options/hello.c
deleted file mode 100644
index 98a53b6..0000000
--- a/tests/Sanity/test-m32-m64-options/hello.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include
-
-int
-main (void)
-{
- puts ("Hello World!");
- return 0;
-}
diff --git a/tests/Sanity/test-m32-m64-options/hello.cpp b/tests/Sanity/test-m32-m64-options/hello.cpp
deleted file mode 100644
index 0f2234e..0000000
--- a/tests/Sanity/test-m32-m64-options/hello.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-#include
-
-int
-main (void)
-{
- std::cout << "Hello, world!\n";
-}
diff --git a/tests/Sanity/test-m32-m64-options/hello.f90 b/tests/Sanity/test-m32-m64-options/hello.f90
deleted file mode 100644
index afabbb2..0000000
--- a/tests/Sanity/test-m32-m64-options/hello.f90
+++ /dev/null
@@ -1,3 +0,0 @@
- program hello
- print *, "Hello World!"
- end program hello
diff --git a/tests/Sanity/test-m32-m64-options/lambda-template.C b/tests/Sanity/test-m32-m64-options/lambda-template.C
deleted file mode 100644
index 6f3b4e8..0000000
--- a/tests/Sanity/test-m32-m64-options/lambda-template.C
+++ /dev/null
@@ -1,41 +0,0 @@
-// { dg-options -std=c++0x }
-// { dg-do run }
-
-extern "C" void abort();
-
-template
-auto apply (T t) -> decltype (t())
-{
- return t();
-}
-
-template
-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);
-}
diff --git a/tests/Sanity/test-m32-m64-options/main.fmf b/tests/Sanity/test-m32-m64-options/main.fmf
deleted file mode 100644
index cef912f..0000000
--- a/tests/Sanity/test-m32-m64-options/main.fmf
+++ /dev/null
@@ -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
diff --git a/tests/Sanity/test-m32-m64-options/omphello.c b/tests/Sanity/test-m32-m64-options/omphello.c
deleted file mode 100644
index 85b591f..0000000
--- a/tests/Sanity/test-m32-m64-options/omphello.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include
-#include
-#include
-
-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;
-}
diff --git a/tests/Sanity/test-m32-m64-options/quad.c b/tests/Sanity/test-m32-m64-options/quad.c
deleted file mode 100644
index f9e5ef1..0000000
--- a/tests/Sanity/test-m32-m64-options/quad.c
+++ /dev/null
@@ -1,38 +0,0 @@
-#include
-#include
-#include
-
-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;
-}
diff --git a/tests/Sanity/test-m32-m64-options/runtest.sh b/tests/Sanity/test-m32-m64-options/runtest.sh
deleted file mode 100755
index 31b8241..0000000
--- a/tests/Sanity/test-m32-m64-options/runtest.sh
+++ /dev/null
@@ -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
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# 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 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
diff --git a/tests/Sanity/test-m32-m64-options/thr-init-2.c b/tests/Sanity/test-m32-m64-options/thr-init-2.c
deleted file mode 100644
index 5b70dd2..0000000
--- a/tests/Sanity/test-m32-m64-options/thr-init-2.c
+++ /dev/null
@@ -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;
-}
diff --git a/tests/Sanity/test-m32-m64-options/tm.c b/tests/Sanity/test-m32-m64-options/tm.c
deleted file mode 100644
index 92b90db..0000000
--- a/tests/Sanity/test-m32-m64-options/tm.c
+++ /dev/null
@@ -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);
-}
diff --git a/tests/fedora-flags/hello.c b/tests/fedora-flags/hello.c
deleted file mode 100644
index 51b259b..0000000
--- a/tests/fedora-flags/hello.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#include
-
-void hello() {
- printf("Hello World\n");
-}
diff --git a/tests/fedora-flags/hello.cpp b/tests/fedora-flags/hello.cpp
deleted file mode 100644
index 400612b..0000000
--- a/tests/fedora-flags/hello.cpp
+++ /dev/null
@@ -1,5 +0,0 @@
-#include
-
-void hello() {
- std::cout << "Hello World\n";
-}
diff --git a/tests/fedora-flags/main.c b/tests/fedora-flags/main.c
deleted file mode 100644
index 1a3455d..0000000
--- a/tests/fedora-flags/main.c
+++ /dev/null
@@ -1,6 +0,0 @@
-void hello();
-
-int main(int argc, char **argv) {
- hello();
- return 0;
-}
diff --git a/tests/fedora-flags/main.cpp b/tests/fedora-flags/main.cpp
deleted file mode 100644
index 1a3455d..0000000
--- a/tests/fedora-flags/main.cpp
+++ /dev/null
@@ -1,6 +0,0 @@
-void hello();
-
-int main(int argc, char **argv) {
- hello();
- return 0;
-}
diff --git a/tests/fedora-flags/main.fmf b/tests/fedora-flags/main.fmf
deleted file mode 100644
index 43934a7..0000000
--- a/tests/fedora-flags/main.fmf
+++ /dev/null
@@ -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
diff --git a/tests/fedora-flags/runtest.sh b/tests/fedora-flags/runtest.sh
deleted file mode 100755
index 01b656b..0000000
--- a/tests/fedora-flags/runtest.sh
+++ /dev/null
@@ -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"
diff --git a/tests/smoke-test/Makefile b/tests/smoke-test/Makefile
deleted file mode 100644
index fb46790..0000000
--- a/tests/smoke-test/Makefile
+++ /dev/null
@@ -1,65 +0,0 @@
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# Makefile of /tools/gcc/Sanity/smoke-test
-# Description: Basic smoke test.
-# Author: Marek Polacek
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# 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 " > $(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)
diff --git a/tests/smoke-test/PURPOSE b/tests/smoke-test/PURPOSE
deleted file mode 100644
index 912f7b4..0000000
--- a/tests/smoke-test/PURPOSE
+++ /dev/null
@@ -1,3 +0,0 @@
-PURPOSE of /tools/gcc/Sanity/smoke-test
-Description: Basic smoke test.
-Author: Marek Polacek
diff --git a/tests/smoke-test/clear_cache.c b/tests/smoke-test/clear_cache.c
deleted file mode 100644
index b10479f..0000000
--- a/tests/smoke-test/clear_cache.c
+++ /dev/null
@@ -1,7 +0,0 @@
-int
-main (void)
-{
- char *mem = __builtin_alloca (40);
- __builtin___clear_cache (mem, mem + 40);
- return 0;
-}
diff --git a/tests/smoke-test/hello.c b/tests/smoke-test/hello.c
deleted file mode 100644
index 4096e11..0000000
--- a/tests/smoke-test/hello.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include
-
-int
-main (void)
-{
- puts ("Hello World!");
-}
diff --git a/tests/smoke-test/hello.cpp b/tests/smoke-test/hello.cpp
deleted file mode 100644
index 0f2234e..0000000
--- a/tests/smoke-test/hello.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-#include
-
-int
-main (void)
-{
- std::cout << "Hello, world!\n";
-}
diff --git a/tests/smoke-test/hello.f90 b/tests/smoke-test/hello.f90
deleted file mode 100644
index afabbb2..0000000
--- a/tests/smoke-test/hello.f90
+++ /dev/null
@@ -1,3 +0,0 @@
- program hello
- print *, "Hello World!"
- end program hello
diff --git a/tests/smoke-test/main.fmf b/tests/smoke-test/main.fmf
deleted file mode 100644
index 3710ca3..0000000
--- a/tests/smoke-test/main.fmf
+++ /dev/null
@@ -1,22 +0,0 @@
-summary: Basic smoke test.
-description: ''
-contact:
-- Marek Polacek
-component:
-- gcc
-test: ./runtest.sh
-framework: beakerlib
-recommend:
-- gcc
-- gcc-c++
-- gcc-gfortran
-- glibc-common
-- glibc-devel
-- libquadmath
-- libquadmath-devel
-- libgomp
-- libgcc
-- libstdc++-devel
-duration: 10m
-extra-summary: /tools/gcc/Sanity/smoke-test
-extra-task: /tools/gcc/Sanity/smoke-test
diff --git a/tests/smoke-test/omphello.c b/tests/smoke-test/omphello.c
deleted file mode 100644
index 85b591f..0000000
--- a/tests/smoke-test/omphello.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include
-#include
-#include
-
-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;
-}
diff --git a/tests/smoke-test/quad.c b/tests/smoke-test/quad.c
deleted file mode 100644
index e5a6cc7..0000000
--- a/tests/smoke-test/quad.c
+++ /dev/null
@@ -1,38 +0,0 @@
-#include
-#include
-#include
-
-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;
-}
diff --git a/tests/smoke-test/runtest.sh b/tests/smoke-test/runtest.sh
deleted file mode 100755
index 7b6a4e9..0000000
--- a/tests/smoke-test/runtest.sh
+++ /dev/null
@@ -1,127 +0,0 @@
-#!/bin/bash
-# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# runtest.sh of /tools/gcc/Sanity/smoke-test
-# Description: Basic smoke test.
-# Author: Marek Polacek
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# 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.
-#
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-# A testing change.
-
-# Include Beaker environment
-. /usr/share/beakerlib/beakerlib.sh || exit 1
-
-PACKAGES=(gcc gcc-c++ gcc-gfortran glibc-common libgomp libgcc glibc-devel libstdc++ libstdc++-devel)
-
-# Choose the compiler.
-GCC=${GCC:-gcc}
-GXX=${GXX:-g++}
-GFORTRAN=${GFORTRAN:-gfortran}
-
-PACKAGE=gcc
-
-rlJournalStart
- rlPhaseStartSetup
- export PRI_ARCH=`rlGetPrimaryArch`
- export SEC_ARCH=`rlGetSecondaryArch`
- # don't assert anything under devtoolset
- if type gcc | grep -q -v devtoolset
- then
- for p in "${PACKAGES[@]}"; do
- rpm -q "$p.$PRI_ARCH" || yum install -y "$p.$PRI_ARCH"
- rlAssertRpm "$p.$PRI_ARCH"
- done; unset p
- fi
- rlLog "GCC = $GCC"
- rlLog "Installed within `rpmquery -f $(which $GCC)`"
- rlLog "GXX = $GXX"
- rlLog "Installed within `rpmquery -f $(which $GXX)`"
- rlLog "GFORTRAN = $GFORTRAN"
- rlLog "Installed within `rpmquery -f $(which $GFORTRAN)`"
- rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
- # We need some files.
- rlRun "cp -v hello.{c,cpp,f90} tm.c quad.c thr-init-2.c clear_cache.c omphello.c $TmpDir"
- rlRun "pushd $TmpDir"
- rlRun "rpmquery -l libstdc++-devel.$PRI_ARCH"
- test -n "$SEC_ARCH" && rpmquery "libstdc++-devel.$SEC_ARCH" && rlRun "rpmquery -l libstdc++-devel.$SEC_ARCH"
- rlPhaseEnd
-
- rlPhaseStartSetup "Showing compiler versions"
- for compiler in $GCC $GXX $GFORTRAN
- do
- rlLog "Version of compiler: $compiler"
- eval "$compiler --version 2>&1" | while read line
- do
- rlLog " $line"
- done
- done
- rlPhaseEnd
-
- rlPhaseStartTest "Compile"
- rlRun "$GCC hello.c -o hello_c"
- rlRun "$GXX hello.cpp -o hello_cpp"
- rlRun "$GFORTRAN hello.f90 -o hello_fortran"
-
- # TM support is GCC >=4.7 only.
- $GCC -xc -O2 -std=gnu99 -fgnu-tm - <<< "int main(){}"
- if test $? -eq 0; then
- rlRun "$GCC -O2 -std=gnu99 -fgnu-tm tm.c -o tm"
- rlRun "./tm"
- fi
-
- # Test OpenMP.
- rlRun "$GCC omphello.c -O2 -std=gnu99 -fopenmp -o omp"
- rlRun "./omp"
-
- # Test __thread.
- rlRun "$GCC thr-init-2.c -O2 -std=gnu99 -ftls-model=initial-exec -o thr"
- rlRun "./thr"
-
- # Now test some libquadmath stuff (__float128 support).
- # libquadmath is mising on RHEL machines, usually.
- test "`rpmquery --qf '%{version}-%{release}' libquadmath`" = "`rpmquery --qf '%{version}-%{release}' $GCC`"
- if test $? -eq 0 -a "$GCC" = "gcc"; then
- rlRun "$GCC quad.c -O2 -std=gnu99 -lquadmath -lm -o quad"
- rlRun "./quad"
- fi
-
- # And now something from libgcc, e.g. __builtin___clear_cache.
- # But not on RHEL5.
- if ! rlIsRHEL 5; then
- rlRun "$GCC clear_cache.c -O2 -std=gnu99 -o cache"
- rlRun "./cache"
- fi
- rlPhaseEnd
-
- rlPhaseStartTest "Check dependant libraries"
- rlRun "ldd hello_{c,cpp,fortran} &> ldd.out"
- # Nothing should be linked against anything in /opt.
- rlAssertNotGrep "/opt" ldd.out
- rlPhaseEnd
-
- rlPhaseStartCleanup
- rlRun "popd"
- rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
- rlPhaseEnd
-rlJournalPrintText
-rlJournalEnd
diff --git a/tests/smoke-test/thr-init-2.c b/tests/smoke-test/thr-init-2.c
deleted file mode 100644
index 051cff9..0000000
--- a/tests/smoke-test/thr-init-2.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/* { dg-do run } */
-/* { dg-require-effective-target tls_runtime } */
-/* { dg-add-options tls } */
-
-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;
-}
diff --git a/tests/smoke-test/tm.c b/tests/smoke-test/tm.c
deleted file mode 100644
index f9b4c9b..0000000
--- a/tests/smoke-test/tm.c
+++ /dev/null
@@ -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 );
-}
diff --git a/update-gcc.sh b/update-gcc.sh
index 0c357f3..b49ed15 100755
--- a/update-gcc.sh
+++ b/update-gcc.sh
@@ -3,5 +3,5 @@
git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp
git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1
d=`date --iso | sed 's/-//g'`
-git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-13.1.1-$d/ $1 | xz -9e > gcc-13.1.1-$d.tar.xz
+git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-13.2.1-$d/ $1 | xz -9e > gcc-13.2.1-$d.tar.xz
rm -rf gcc-dir.tmp