Skip to content
Snippets Groups Projects
  1. Nov 16, 2024
    • Martin Uecker's avatar
      c: fix ICE when forming composite type for two structures / unions [PR117548] · d8af6c20
      Martin Uecker authored
      When forming the composite type from two tagged type, we need to find the
      original type for a typedecl to get the correct tag.
      
      	PR c/117548
      
      gcc/c/ChangeLog:
      	* c-decl.cc (finish_struct): Add checking assertion.
      	* c-typeck.cc (c_type_original): New function.
      	(composite_types_internal): Get tag from original type.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/pr117548.c: New test.
      d8af6c20
    • Sam James's avatar
      testsuite: i386: adapt to -std=gnu23 default change · 6aabe3ad
      Sam James authored
      r15-5327-g55e3bd376b2214 changes the default to -std=gnu23 but this
      test relies on unprototyped functions. Follow Joseph's advice
      in that commit and tweak the test accordingly.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/i386/pr66891.c: Pass -std=gnu17.
      6aabe3ad
    • Sam James's avatar
      testsuite: graphite: adapt to -std=gnu23 default change · 714f7d8e
      Sam James authored
      r15-5327-g55e3bd376b2214 changes the default to -std=gnu23 but these
      tests now trigger -Wold-style-definition. Follow Joseph's advice
      in that commit and tweak the tests accordingly.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/graphite/id-15.c: Pass -Wno-old-style-definition.
      	* gcc.dg/graphite/pr38413.c: Ditto.
      	* gcc.dg/graphite/pr38510.c: Ditto.
      714f7d8e
    • Gaius Mulley's avatar
      PR modula2/117555: Add missing return statement after raise · e77fd9aa
      Gaius Mulley authored
      
      This patch adds missing return statements after a call to RAISE.  Four
      of the modules in libgm2 have procedure functions with missing return
      statements.  These errors were exposed after the reimplementation of
      parameter declaration patch and triggered by -Wreturn-type.  The patch
      also adds exit statements to the M2RTS noreturn functions.
      
      gcc/m2/ChangeLog:
      
      	PR modula2/117555
      	* gm2-libs-iso/EXCEPTIONS.mod (CurrentNumber): Add return
      	statement.
      	* gm2-libs-iso/IOChan.mod (ReadResult): Ditto.
      	(CurrentFlags): Ditto.
      	(DeviceError): Ditto.
      	* gm2-libs-iso/IOLink.mod (DeviceTablePtrValue): Ditto.
      	* gm2-libs-iso/LongConv.mod (ValueReal): Ditto.
      	* gm2-libs/M2RTS.mod (Halt): Add noreturn attribute.
      	Add exit (1).
      	(HaltC): Add exit (1).
      	* pge-boot/GM2RTS.cc (M2RTS_Halt): Add exit (1).
      	(M2RTS_HaltC): Ditto.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      e77fd9aa
    • Jonathan Wakely's avatar
      libstdc++: Use -C option to run recursive make in sub-directories · 63798670
      Jonathan Wakely authored
      libstdc++-v3/ChangeLog:
      
      	* Makefile.am: Use $(MAKE) -C dir instead of cd dir && $(MAKE).
      	* Makefile.in: Regenerate.
      63798670
    • Pan Li's avatar
      RISC-V: Remove unnecessary option for scalar SAT_SUB testcase · 4f9af8e4
      Pan Li authored
      
      After we create a isolated folder to hold all SAT scalar test,
      we have fully control of what optimization options passing to
      the testcase.  Thus, it is better to remove the unnecessary
      work around for flto option, as well as the -O3 option for
      each cases.  The riscv.exp will pass sorts of different optimization
      options for each case.
      
      The below test suites are passed for this patch.
      * The rv64gcv fully regression test.
      
      It is test only patch and obvious up to a point, will commit it
      directly if no comments in next 48H.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/riscv/sat/sat_u_sub-1-u16.c: Remove flto dg-skip
      	workaround and -O3 option.
      	* gcc.target/riscv/sat/sat_u_sub-1-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-1-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-1-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-10-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-10-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-10-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-10-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-11-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-11-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-11-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-11-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-12-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-12-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-12-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-12-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-2-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-2-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-2-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-2-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-3-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-3-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-3-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-3-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-4-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-4-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-4-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-4-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-5-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-5-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-5-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-5-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-6-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-6-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-6-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-6-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-7-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-7-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-7-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-7-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-8-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-8-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-8-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-8-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-9-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-9-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-9-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub-9-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u16-1.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u16-2.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u16-3.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u16-4.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u32-1.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u32-2.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u32-3.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u32-4.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u64-1.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u64-2.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u8-1.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u8-2.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u8-3.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u8-4.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u16-1.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u16-2.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u16-3.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u32-1.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u32-2.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u32-3.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u64-1.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u8-1.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u8-2.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u8-3.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u16-1.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u16-2.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u32-1.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u32-2.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u8-1.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u8-2.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u16-1.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u16-2.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u32-1.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u32-2.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u8-1.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u8-2.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u8.c: Ditto.
      
      Signed-off-by: default avatarPan Li <pan2.li@intel.com>
      4f9af8e4
    • GCC Administrator's avatar
      Daily bump. · 349368ae
      GCC Administrator authored
      349368ae
  2. Nov 15, 2024
    • Joseph Myers's avatar
      c: Default to -std=gnu23 · 55e3bd37
      Joseph Myers authored
      Change the default language version for C compilation from -std=gnu17
      to -std=gnu23.  A few tests are updated to remove local definitions of
      bool, true and false (where making such an unconditional test change
      seemed to make more sense than changing the test conditionally earlier
      or building it with -std=gnu17); most test issues were already
      addressed in previous patches.  In the case of
      ctf-function-pointers-2.c, it was agreed in bug 117289 that it would
      be OK to put -std=gnu17 in the test and leave more optimal BTF / CTF
      output for this test as a potential future improvement.
      
      Since the original test fixes, more such fixes have become necessary
      and so are included in this patch.  More noinline attributes are added
      to simulate-thread tests where () meaning a prototype affected test
      results, while gcc.dg/torture/pr117496-1.c (a test declaring a
      function with () then calling it with arguments) gets -std=gnu17
      added.
      
      Bootstrapped with no regressions for x86_64-pc-linux-gnu.
      
      NOTE: it's likely there are target-specific tests for non-x86 targets
      that need updating as a result of this change.  See commit
      9fb5348e ("testsuite: Prepare for
      -std=gnu23 default") for examples of changes to prepare the testsuite
      to work with a -std=gnu23 default.  In most cases, adding
      -Wno-old-style-definition (for warnings for old-style function
      definitions) or -std=gnu17 (for other issues such as unprototyped
      function declarations with ()) is appropriate, but watch out for cases
      that indicate bugs with -std=gnu23 (in particular, any ICEs - there
      was only the one nested function test where I had to fix an ICE on
      x86_64).
      
      gcc/
      	* doc/invoke.texi (-std=gnu17, -std=gnu23): Document -std=gnu23 as
      	default for C code.
      
      gcc/c-family/
      	* c-opts.cc (c_common_init_options): Default to C23.
      
      gcc/testsuite/
      	* c-c++-common/analyzer/asm-x86-dyndbg-2.c,
      	c-c++-common/analyzer/asm-x86-lp64-2.c,
      	c-c++-common/analyzer/attr-malloc-CVE-2019-19078-usb-leak.c,
      	c-c++-common/analyzer/coreutils-cksum-pr108664.c,
      	c-c++-common/analyzer/feasibility-3.c,
      	c-c++-common/analyzer/pr105783.c, c-c++-common/analyzer/sock-1.c,
      	c-c++-common/attributes-4.c, gcc.dg/Warray-bounds-78.c,
      	gcc.dg/analyzer/asm-x86-dyndbg-1.c: Do not define bool, true or
      	false.
      	* gcc.dg/debug/ctf/ctf-function-pointers-2.c: Use -std-gnu17.
      	* gcc.dg/gnu23-version-2.c: New test.
      	* gcc.dg/simulate-thread/atomic-load-int.c,
      	gcc.dg/simulate-thread/atomic-load-longlong.c,
      	gcc.dg/simulate-thread/atomic-load-short.c: Add more noinline
      	attributes.
      	* gcc.dg/torture/pr117496-1.c: Use -std=gnu17.
      55e3bd37
    • Gaius Mulley's avatar
      PR modula2/117371: type incompatibility between INTEGER and CARDINAL · f242f79b
      Gaius Mulley authored
      
      This patch enforces a const expression increment in a FOR loop.
      It also fixes missing error locations.  The FOR loop last iterator
      value is now calculated during M2GenGCC after all types and constants have
      been resolved.  This results in fewer quadruples (as there is no need to
      build two paths for step > 0 and step < 0).
      
      gcc/m2/ChangeLog:
      
      	PR modula2/117371
      	* gm2-compiler/M2Base.mod (MixMetaTypes): Add parameter TRUE to
      	MetaErrorDecl.
      	(IsUserType): Test against ZType.
      	(MixTypesDecl): Test for ZType.
      	* gm2-compiler/M2GenGCC.mod (ErrorMessageDecl): Add parameter TRUE to
      	MetaErrorDecl.
      	(CodeLastForIterator): New procedure.
      	(FoldLastForIterator): Ditto.
      	(PerformLastForIterator): Ditto.
      	(CodeStatement): Add case clause for LastForIteratorOp.
      	(ErrorMessageDecl): Add iserror parameter.
      	Call MetaErrorDecl with iserror parameter.
      	(checkIncorrectMeta): Call MetaErrorDecl with TRUE parameter.
      	(CheckBinaryExpressionTypes): Ditto.
      	(CheckElementSetTypes): Ditto.
      	* gm2-compiler/M2LexBuf.def (MakeVirtualTok): Update comment
      	detailing the fall back when UnknownTokenNo is encountered.
      	(MakeVirtual2Tok): Ditto.
      	* gm2-compiler/M2LexBuf.mod (MakeVirtualTok): Check against
      	UnknownTokenNo.
      	(MakeVirtual2Tok): Ditto.
      	* gm2-compiler/M2MetaError.def (MetaErrorDecl): Add error parameter.
      	* gm2-compiler/M2MetaError.mod (MetaErrorDecl): Add error
      	parameter.
      	Issue warning if error is FALSE.
      	* gm2-compiler/M2Quads.def (QuadOperator): Add LastForIteratorOp.
      	* gm2-compiler/M2Quads.mod (AddQuadInformation): New case clause
      	LastForIteratorOp.
      	(CheckAddTuple2Read): New procedure.
      	(BuildForLoopToRangeCheck): Remove.
      	(ForLoopLastIteratorVariable): Ditto.
      	(ForLoopLastIteratorConstant): Ditto.
      	(ForLoopLastIterator): Reimplement.
      	(BuildForToByDo): Remove ByType from call to ForLoopLastIterator.
      	(WriteQuad): New case clause LastForIteratorOp.
      	(WriteOperator): Ditto.
      	* gm2-compiler/M2Students.def
      	(CheckForVariableThatLooksLikeKeyword): Replace with ...
      	(CheckVariableAgainstKeyword): ... this.
      	* gm2-compiler/M2Students.mod
      	(CheckForVariableThatLooksLikeKeyword): Replace with ...
      	(CheckVariableAgainstKeyword): ... this.
      	* gm2-compiler/M2SymInit.mod (CheckLastForIterator): New
      	procedure.
      	(CheckReadBeforeInitQuad): New case clause to call
      	CheckLastForIterator.
      	* gm2-compiler/P2SymBuild.mod: Replace
      	CheckForVariableThatLooksLikeKeyword with CheckVariableAgainstKeyword.
      
      gcc/testsuite/ChangeLog:
      
      	PR modula2/117371
      	* gm2/iso/fail/forloopbyvar.mod: New test.
      	* gm2/iso/fail/forloopbyvar4.mod: New test.
      	* gm2/iso/fail/forloopbyvar5.mod: New test.
      	* gm2/iso/pass/forloopbyvar3.mod: New test.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      f242f79b
    • Gaius Mulley's avatar
      modula2: Add dependencies for generated sources · 3e6a7824
      Gaius Mulley authored
      
      This patch adds rules and dependencies for the automatically
      generated grammar sources.  Bootstrapped using make -j 160.
      
      gcc/m2/ChangeLog:
      
      	* Make-lang.in (m2/gm2-compiler-boot/P0SyntaxCheck.c):
      	New rule.
      	(m2/gm2-compiler-boot/P0SyntaxCheck.o): Ditto.
      	(m2/gm2-compiler-boot/P1Build.c): Ditto.
      	(m2/gm2-compiler-boot/P1Build.o): Ditto.
      	(m2/gm2-compiler-boot/P2Build.c): Ditto.
      	(m2/gm2-compiler-boot/P2Build.o): Ditto.
      	(m2/gm2-compiler-boot/P3Build.c): Ditto.
      	(m2/gm2-compiler-boot/P3Build.o): Ditto.
      	(m2/gm2-compiler-boot/PCBuild.c): Ditto.
      	(m2/gm2-compiler-boot/PCBuild.o): Ditto.
      	(m2/gm2-compiler-boot/PHBuild.c): Ditto.
      	(m2/gm2-compiler-boot/PHBuild.o): Ditto.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      3e6a7824
    • Jennifer Schmitz's avatar
      match.pd: Fold vec_perm with view_convert · c83e2d47
      Jennifer Schmitz authored
      
      This patch improves the codegen for the following test case:
      uint64x2_t foo (uint64x2_t r) {
          uint32x4_t a = vreinterpretq_u32_u64 (r);
          uint32_t t;
          t = a[0]; a[0] = a[1]; a[1] = t;
          t = a[2]; a[2] = a[3]; a[3] = t;
          return vreinterpretq_u64_u32 (a);
      }
      from (-O1):
      foo:
              mov     v31.16b, v0.16b
              ins     v0.s[0], v0.s[1]
              ins     v0.s[1], v31.s[0]
              ins     v0.s[2], v31.s[3]
              ins     v0.s[3], v31.s[2]
              ret
      to:
      foo:
      	rev64   v0.4s, v0.4s
              ret
      
      This is achieved by extending the following match.pd pattern to account
      for type differences between @0 and @1 due to view converts.
      /* Simplify vector inserts of other vector extracts to a permute.  */
      (simplify
       (bit_insert @0 (BIT_FIELD_REF@2 @1 @rsize @rpos) @ipos)
      
      The patch was bootstrapped and regtested on aarch64-linux-gnu and
      x86_64-linux-gnu, no regression.
      OK for mainline?
      
      Signed-off-by: default avatarJennifer Schmitz <jschmitz@nvidia.com>
      Co-authored-by: default avatarRichard Biener <rguenther@suse.de>
      
      gcc/
      	PR tree-optimization/117093
      	* match.pd: Extend
      	(bit_insert @0 (BIT_FIELD_REF@2 @1 @rsize @rpos) @ipos) to allow
      	type differences between @0 and @1 due to view converts.
      
      gcc/testsuite/
      	PR tree-optimization/117093
      	* gcc.dg/tree-ssa/pr117093.c: New test.
      c83e2d47
    • John David Anglin's avatar
      hppa: Fix typos in 32-bit SFmode peephole2 patterns · 029c16c1
      John David Anglin authored
      2024-11-15  John David Anglin  <danglin@gcc.gnu.org>
      
      gcc/ChangeLog:
      
      	PR target/117564
      	* config/pa/pa.md: Fix typos in 32-bit SFmode peephole2 patterns.
      029c16c1
    • Jan Hubicka's avatar
      Fix type of malloc parameter in trans-expr.cc · d5af5657
      Jan Hubicka authored
      gcc/fortran/ChangeLog:
      
      	* trans-expr.cc (gfc_trans_subcomponent_assign): Fix type of malloc
      	parameter.
      d5af5657
    • Joseph Myers's avatar
      tree-nested: Do not inline or clone functions with nested functions with VM return type [PR117164] · 3320319e
      Joseph Myers authored
      Bug 117164 is an ICE on an existing test with -std=gnu23 involving a
      nested function returning a variable-size structure (and I think the
      last bug needing to be resolved before switching to -std=gnu23 as the
      default, as without fixing this would be a clear regression from a
      change in default).
      
      The problem is a GIMPLE verification failure where (after type
      remapping from inlining / cloning) the return type of the function no
      longer exactly matches the type to which it is assigned (these types
      use structural equality, which means GIMPLE verification can't use
      TYPE_CANONICAL and expects an exact match).  Specifically, the nested
      function itself is *not* inlined (the -fno-inline-small-functions in
      the original test nested-func-12.c, I think, or the noinline attribute
      in some of my variant tests), but the function containing it is either
      cloned (the --param ipa-cp-eval-threshold=0 in the original test) or
      inlined.  (I'm not sure what role -fno-guess-branch-probability plays
      in getting the right situation for the ICE; maybe affecting when
      inlining or cloning is considered profitable?)
      
      There is in fact existing code in tree-nested.cc to prevent inlining
      of a function containing a nested function with variably modified
      *argument* types.  I think the same issue of ensuring consistency of
      types means such prevention should also apply for a variably modified
      return type.  Furthermore, exactly the same problem applies for
      cloning for other reasons as it does for inlining.  Thus, change the
      logic to include variably modified return types for nested functions
      alongside those for arguments of those functions as a reason not to
      inline, and also add the noclone attribute in these cases.
      
      Bootstrapped with no regressions for x86-64-pc-linux-gnu.
      
      	PR c/117164
      
      gcc/
      	* tree-nested.cc: Include "attribs.h".
      	(check_for_nested_with_variably_modified): Also return true for
      	variably modified return type.
      	(create_nesting_tree): If check_for_nested_with_variably_modified
      	returns true, also add noclone attribute.
      
      gcc/testsuite/
      	* gcc.dg/nested-func-13.c, gcc.dg/nested-func-14.c:
      	gcc.dg/nested-func-15.c, gcc.dg/nested-func-16.c,
      	gcc.dg/nested-func-17.c: New tests.
      3320319e
    • Richard Biener's avatar
      Remove unused vcond{,u,eq} expander infrastructure · c57b2f88
      Richard Biener authored
      Now that we no longer exercise vcond{,u,eq} patterns remove unused
      infrastructure.
      
      	* optabs-query.h (get_vcond_icode): Remove.
      	(get_vcond_eq_icode): Likewise.
      	* optabs-tree.h (expand_vec_cond_expr_p): Remove code
      	argument.
      	* optabs-tree.cc (expand_vec_cond_expr_p): Likewise.
      	(vcond_icode_p): Remove.
      	(vcond_eq_icode_p): Likewise.
      	* optabs.h (can_vcond_compare_p): Remove.
      	* optabs.cc (can_vcond_compare_p): Likewise.
      c57b2f88
    • Christophe Lyon's avatar
      testsuite: Fix tail_call and musttail effective targets [PR116080] · a064fed1
      Christophe Lyon authored
      Some of the musttail tests (eg musttail7.c) fail on arm-eabi because
      check_effective_target_musttail pass, but the actual code in the test
      is rejected.
      
      The reason is that on arm-eabi with the default configuration, the
      compiler targets armv4t for which TARGET_INTERWORK is true, making
      arm_function_ok_for_sibcall reject a tail-call candidate if
      TREE_ASM_WRITTEN (decl) is false.
      
      For more recent architecture versions, TARGET_INTERWORK is false,
      hence the problem was not seen on all arm configurations.
      
      musttail7.c is in turn rejected because f2 is recursive, so
      TREE_ASM_WRITTEN is false.
      
      However, the same code used in check_effective_target_musttail is not
      recursive and the function body for foo has TREE_ASM_WRITTEN == true.
      
      The simplest fix is to remove the (empty) body for foo () in
      check_effective_target_musttail.  For consistency, do the same with
      check_effective_target_tail_call.
      
      gcc/testsuite/ChangeLog:
      	PR testsuite/116080
      	* lib/target-supports.exp (check_effective_target_tail_call):
      	Remove foo's body.
      	(check_effective_target_musttail): Likewise.
      a064fed1
    • Richard Biener's avatar
      Remove dead code related to VEC_COND_EXPR expansion from ISEL · 5a2c3a69
      Richard Biener authored
      ISEL was introduced to translate vector comparison and vector
      condition combinations back to internal function calls mapping to
      one of the vcond[u][_eq][_mask] and vec_cmp[_eq] optabs.  With
      removing the legacy non-mask vcond expanders we now rely on all
      vector comparisons and vector conditions to be directly expandable.
      The following keeps the intermediate internal function rewrite
      given gimple_expand_vec_cond_expr still performs some optimizations
      which eventually should move to vector lowering or match.pd, but
      simplifies it down to always expand VEC_COND_EXPR to .VCOND_MASK.
      
      	* gimple-isel.cc (gimple_expand_vec_cond_expr): If not
      	simplifying or lowering, always expand to .VCOND_MASK.
      	(pass_gimple_isel::execute): Simplify.
      5a2c3a69
    • Richard Biener's avatar
      Streamline vector lowering of VEC_COND_EXPR and vector comparisons · f40010c1
      Richard Biener authored
      The following makes sure to lower all VEC_COND_EXPRs that we cannot
      trivially expand, likewise for comparisons.  In particular no longer
      try to combine both in fancy ways.
      
      	* tree-vect-generic.cc (expand_vector_comparison): Lower
      	vector comparisons that we cannot trivially expand.  Remove
      	code dealing with uses in VEC_COND_EXPRs.
      	(expand_vector_condition): Lower vector conditions that we
      	cannot trivially expand.  Remove code dealing with comparison
      	mask definitions.
      	(expand_vector_operation): Drop dce_ssa_names.
      	(expand_vector_operations_1): Likewise.
      f40010c1
    • Florian Weimer's avatar
      Regenerate gcc/c-family/c.opt.urls · 5f71122e
      Florian Weimer authored
      After commit 8833389e.
      
      gcc/c-family/
      
      	* c.opt.urls: Regenerate.
      5f71122e
    • Pan Li's avatar
      RISC-V: Rearrange the test files for scalar SAT_SUB [NFC] · 5cf7ffe0
      Pan Li authored
      
      The test files of scalar SAT_SUB only has numbers as the suffix.
      Rearrange the file name to -{form number}-{target-type}.  For example,
      test form 3 for uint32_t SAT_SUB will have -3-u32.c for asm check and
      -run-3-u32.c for the run test.
      
      Meanwhile, all related test files moved to riscv/sat/.
      
      The below test suites are passed for this patch.
      * The rv64gcv fully regression test.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/riscv/sat_u_sub-2.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-1-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-3.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-1-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-4.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-1-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-1.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-1-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-38.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-10-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-39.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-10-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-40.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-10-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-37.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-10-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-42.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-11-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-43.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-11-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-44.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-11-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-41.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-11-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-46.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-12-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-47.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-12-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-48.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-12-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-45.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-12-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-6.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-2-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-7.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-2-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-2-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-5.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-2-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-10.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-3-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-11.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-3-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-12.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-3-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-9.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-3-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-14.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-4-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-15.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-4-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-4-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-13.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-4-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-18.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-5-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-19.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-5-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-20.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-5-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-17.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-5-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-22.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-6-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-23.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-6-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-24.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-6-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-21.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-6-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-26.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-7-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-27.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-7-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-28.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-7-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-25.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-7-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-30.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-8-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-31.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-8-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-8-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-29.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-8-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-34.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-9-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-35.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-9-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-36.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-9-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-33.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-9-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-2.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-1-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-3.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-1-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-4.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-1-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-1.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-1-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-38.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-10-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-39.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-10-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-40.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-10-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-37.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-10-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-42.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-11-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-43.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-11-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-44.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-11-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-41.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-11-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-46.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-12-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-47.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-12-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-48.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-12-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-45.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-12-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-6.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-2-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-7.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-2-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-2-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-5.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-2-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-10.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-3-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-11.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-3-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-12.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-3-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-9.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-3-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-14.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-4-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-15.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-4-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-4-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-13.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-4-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-18.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-5-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-19.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-5-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-20.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-5-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-17.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-5-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-22.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-6-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-23.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-6-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-24.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-6-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-21.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-6-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-26.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-7-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-27.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-7-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-28.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-7-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-25.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-7-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-30.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-8-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-31.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-8-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-8-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-29.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-8-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-34.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-9-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-35.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-9-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-36.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-9-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub-run-33.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub-run-9-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-2_1.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u16-1.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-2_2.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u16-2.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-2_3.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u16-3.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-2_4.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u16-4.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-2.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-3_1.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u32-1.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-3_2.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u32-2.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-3_3.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u32-3.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-3_4.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u32-4.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-3.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-4_1.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u64-1.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-4_2.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u64-2.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-4.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-1_1.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u8-1.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-1_2.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u8-2.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-1_3.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u8-3.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-1_4.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u8-4.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-1.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-1-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-6_1.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u16-1.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-6_2.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u16-2.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-6_3.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u16-3.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-6.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-15_1.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u32-1.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-15_2.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u32-2.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-7_3.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u32-3.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-7.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-8_1.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u64-1.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-5_1.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u8-1.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-5_2.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u8-2.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-5_3.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u8-3.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-5.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-2-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-10_1.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u16-1.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-10_2.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u16-2.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-10.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-11_1.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u32-1.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-11_2.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u32-2.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-11.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-12.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-9_1.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u8-1.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-9_2.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u8-2.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-9.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-3-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-14_1.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u16-1.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-14_2.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u16-2.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-14.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-7_1.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u32-1.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-7_2.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u32-2.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-15.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-13_1.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u8-1.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-13_2.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u8-2.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-13.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-4-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-run-2.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-run-1-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-run-3.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-run-1-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-run-4.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-run-1-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-run-1.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-run-1-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-run-6.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-run-2-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-run-7.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-run-2-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-run-8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-run-2-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-run-5.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-run-2-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-run-10.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-run-3-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-run-11.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-run-3-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-run-12.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-run-3-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-run-9.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-run-3-u8.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-run-14.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-run-4-u16.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-run-15.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-run-4-u32.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-run-16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-run-4-u64.c: ...here.
      	* gcc.target/riscv/sat_u_sub_imm-run-13.c: Move to...
      	* gcc.target/riscv/sat/sat_u_sub_imm-run-4-u8.c: ...here.
      
      Signed-off-by: default avatarPan Li <pan2.li@intel.com>
      5cf7ffe0
    • Florian Weimer's avatar
      c: Introduce -Wmissing-parameter-name · 8833389e
      Florian Weimer authored
      Empirically, omitted parameter names are difficult to catch in code
      review.  With this change, projects can build with
      -Werror=missing-parameter-name, to avoid this unnecessary
      incompatibility with older GCC versions.  The existing
      -pedantic-errors option is too broad for that because it also flags
      widely used and widely available GCC extensions.  Likewise for
      -Werror=c11-c23-compat.
      
      gcc/c-family/
      
      	* c-opts.cc (c_common_post_options): Initialize
      	warn_missing_parameter_name.
      	* c.opt (Wmissing-parameter-name): New.
      
      gcc/c/
      	* c-decl.cc (store_parm_decls_newstyle): Use
      	OPT_Wmissing_parameter_name for missing parameter name
      	warning.
      	* c-errors.cc (pedwarn_c11): Enable fine-grained warning
      	control via the option_id argument.
      
      gcc/
      
      	* doc/invoke.texi: Document Wmissing-parameter-name.
      
      gcc/testsuite/
      
      	* gcc.dg/Wmissing-parameter-name-1.c: New test.
      	* gcc.dg/Wmissing-parameter-name-2.c: New test.
      	* gcc.dg/Wmissing-parameter-name-3.c: New test.
      8833389e
    • Florian Weimer's avatar
      Report the section name in case of section type conflicts · 71bf2bef
      Florian Weimer authored
      The section name might the user a hint of what is going on.
      
      gcc/
      
      	* varasm.cc (get_section): Include name of section in
      	diagnostic messages.
      71bf2bef
    • Pan Li's avatar
      RISC-V: Remove unnecessary option for scalar SAT_ADD testcase · 9676da9f
      Pan Li authored
      
      After we create a isolated folder to hold all SAT scalar test,
      we have fully control of what optimization options passing to
      the testcase.  Thus, it is better to remove the unnecessary
      work around for flto option, as well as the -O3 option for
      each cases.  The riscv.exp will pass sorts of different optimization
      options for each case.
      
      The below test suites are passed for this patch.
      * The rv64gcv fully regression test.
      
      It is test only patch and obvious up to a point, will commit it
      directly if no comments in next 48H.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/riscv/sat/sat_s_add-1-i16.c: Remove flto
      	dg-skip workaround and -O3 option.
      	* gcc.target/riscv/sat/sat_s_add-1-i32.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add-1-i64.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add-1-i8.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add-2-i16.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add-2-i32.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add-2-i64.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add-2-i8.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add-3-i16.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add-3-i32.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add-3-i64.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add-3-i8.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add-4-i16.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add-4-i32.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add-4-i64.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add-4-i8.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add_imm-1-1.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add_imm-1.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add_imm-2-1.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add_imm-2.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add_imm-3-1.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add_imm-3.c: Ditto.
      	* gcc.target/riscv/sat/sat_s_add_imm-4.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-1-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-1-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-1-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-1-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-2-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-2-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-2-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-2-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-3-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-3-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-3-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-3-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-4-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-4-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-4-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-4-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-5-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-5-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-5-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-5-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-6-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-6-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-6-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add-6-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm-1-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm-1-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm-1-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm-1-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm-2-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm-2-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm-2-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm-2-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm-3-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm-3-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm-3-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm-3-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm-4-u16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm-4-u32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm-4-u64.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm-4-u8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-1.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-10.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-11.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-12.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-13.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-14.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-15.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-16.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-17.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-18.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-19.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-2.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-20.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-21.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-22.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-23.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-24.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-25.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-26.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-27.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-28.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-29.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-3.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-30.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-31.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-32.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-33.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-34.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-35.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-36.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-37.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-38.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-39.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-4.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-40.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-41.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-42.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-43.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-44.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-45.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-46.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-47.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-48.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-49.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-5.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-50.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-51.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-52.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-53.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-54.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-55.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-56.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-57.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-58.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-59.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-6.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-60.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-7.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-8.c: Ditto.
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-9.c: Ditto.
      
      Signed-off-by: default avatarPan Li <pan2.li@intel.com>
      Signed-off-by: default avatarPan Li <pan2.li@intel.com>
      9676da9f
    • Jakub Jelinek's avatar
      testsuite: Change 3 tests from c++14 to c++11 · e5050819
      Jakub Jelinek authored
      These tests are valid C++11, so we can run them in C++11 too.
      
      2024-11-15  Jakub Jelinek  <jakub@redhat.com>
      
      	* g++.dg/tree-ssa/pr116868.C: Change effective target from c++14 to
      	c++11.
      	* g++.dg/tree-ssa/pr96945.C: Likewise.
      	* g++.dg/tree-ssa/pr110819.C: Likewise.
      e5050819
    • Jakub Jelinek's avatar
      c: Add _Decimal64x support · 1910ecf1
      Jakub Jelinek authored
      The following patch adds _Decimal64x type support.  Our dfp libraries (dpd &
      libbid) can only handle decimal32, decimal64 and decimal128 formats and I
      don't see that changing any time soon, so the following patch just hardcodes
      that _Decimal64x has the same mode as _Decimal128 (but is a distinct type).
      In the unlikely event some target would introduce something different that
      can be of course changed with target hooks but would be an ABI change.
      _Decimal128x is optional and we don't have a wider decimal type, so that
      type isn't added.
      
      2024-11-15  Jakub Jelinek  <jakub@redhat.com>
      
      gcc/
      	* tree-core.h (enum tree_index): Add TI_DFLOAT64X_TYPE.
      	* tree.h (dfloat64x_type_node): Define.
      	* tree.cc (build_common_tree_nodes): Initialize dfloat64x_type_node.
      	* builtin-types.def (BT_DFLOAT64X): New DEF_PRIMITIVE_TYPE.
      	(BT_FN_DFLOAT64X): New DEF_FUNCTION_TYPE_0.
      	(BT_FN_DFLOAT64X_CONST_STRING, BT_FN_DFLOAT64X_DFLOAT64X): New
      	DEF_FUNCTION_TYPE_1.
      	* builtins.def (BUILT_IN_FABSD64X, BUILT_IN_INFD64X, BUILT_IN_NAND64X,
      	BUILT_IN_NANSD64X): New builtins.
      	* builtins.cc (expand_builtin): Handle BUILT_IN_FABSD64X.
      	(fold_builtin_0): Handle BUILT_IN_INFD64X.
      	(fold_builtin_1): Handle BUILT_IN_FABSD64X.
      	* fold-const-call.cc (fold_const_call): Handle CFN_BUILT_IN_NAND64X
      	and CFN_BUILT_IN_NANSD64X.
      	* ginclude/float.h (DEC64X_MANT_DIG, DEC64X_MIN_EXP, DEC64X_MAX_EXP,
      	DEC64X_MAX, DEC64X_EPSILON, DEC64X_MIN, DEC64X_TRUE_MIN,
      	DEC64X_SNAN): Redefine.
      gcc/c-family/
      	* c-common.h (enum rid): Add RID_DFLOAT64X.
      	* c-common.cc (c_global_trees): Fix comment typo.  Add
      	dfloat64x_type_node.
      	(c_common_nodes_and_builtins): Handle RID_DFLOAT64X.
      	* c-cppbuiltin.cc (c_cpp_builtins): Call
      	builtin_define_decimal_float_constants also for dfloat64x_type_node
      	if non-NULL.
      	* c-lex.cc (interpret_float): Handle d64x suffixes.
      	* c-pretty-print.cc (pp_c_floating_constant): Print d64x suffixes
      	on dfloat64x_type_node typed constants.
      gcc/c/
      	* c-tree.h (enum c_typespec_keyword): Add cts_dfloat64x and adjust
      	comment.
      	* c-parser.cc (c_keyword_starts_typename, c_token_starts_declspecs,
      	c_parser_declspecs, c_parser_gnu_attribute_any_word): Handle
      	RID_DFLOAT64X.
      	(c_parser_postfix_expression): Handle _Decimal64x arguments in
      	__builtin_tgmath.
      	(warn_for_abs): Handle BUILT_IN_FABSD64X.
      	* c-decl.cc (declspecs_add_type): Handle cts_dfloat64x and
      	RID_DFLOAT64X.
      	(finish_declspecs): Handle cts_dfloat64x.
      	* c-typeck.cc (c_common_type): Handle dfloat64x_type_node.
      gcc/testsuite/
      	* gcc.dg/dfp/c11-decimal64x-1.c: New test.
      	* gcc.dg/dfp/c11-decimal64x-2.c: New test.
      	* gcc.dg/dfp/c23-decimal64x-1.c: New test.
      	* gcc.dg/dfp/c23-decimal64x-2.c: New test.
      	* gcc.dg/dfp/c23-decimal64x-3.c: New test.
      	* gcc.dg/dfp/c23-decimal64x-4.c: New test.
      libcpp/
      	* expr.cc (interpret_float_suffix): Handle d64x and D64x
      	suffixes, adjust comment.
      1910ecf1
    • Marek Polacek's avatar
      testsuite: fix g++.dg/tree-ssa/pr58483.C · 3757009a
      Marek Polacek authored
      This test mistakenly used two dg-do compile.  Since it passes
      in C++11 as well, we can run it in C++11 and up.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/tree-ssa/pr58483.C: Run in C++11 and up.
      3757009a
    • Pan Li's avatar
      RISC-V: Move scalar SAT_ADD test cases to a isolated folder · e0a402b3
      Pan Li authored
      
      Move the scalar SAT_ADD includes both the signed and unsigned
      integer to the folder gcc.target/riscv/sat.  According to the
      implementation the below options will be appended for each
      test cases.
      
      * -O2
      * -O3
      * -Ofast
      * -Os
      * -Oz
      
      Then we can see the test log similar as below:
      
      Executing on host: .../sat_s_add-1-i8.c ...  -O2 -march=rv64gc -S -o sat_s_add-1-i8.s
      Executing on host: .../sat_s_add-1-i8.c ...  -O3 -march=rv64gc -S -o sat_s_add-1-i8.s
      Executing on host: .../sat_s_add-1-i8.c ...  -Ofast -march=rv64gc -S -o sat_s_add-1-i8.s
      Executing on host: .../sat_s_add-1-i8.c ...  -Oz -march=rv64gc -S -o sat_s_add-1-i8.s
      Executing on host: .../sat_s_add-1-i8.c ...  -Os -march=rv64gc -S -o sat_s_add-1-i8.s
      
      The below test suites are passed for this patch.
      * The rv64gcv fully regression test.
      
      Committed as pre-approved by kito.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/riscv/riscv.exp: Add new folder sat under riscv
      	and add 5 options for each sat test.
      	* gcc.target/riscv/sat_s_add-1-i16.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-1-i16.c: ...here.
      	* gcc.target/riscv/sat_s_add-1-i32.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-1-i32.c: ...here.
      	* gcc.target/riscv/sat_s_add-1-i64.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-1-i64.c: ...here.
      	* gcc.target/riscv/sat_s_add-1-i8.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-1-i8.c: ...here.
      	* gcc.target/riscv/sat_s_add-2-i16.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-2-i16.c: ...here.
      	* gcc.target/riscv/sat_s_add-2-i32.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-2-i32.c: ...here.
      	* gcc.target/riscv/sat_s_add-2-i64.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-2-i64.c: ...here.
      	* gcc.target/riscv/sat_s_add-2-i8.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-2-i8.c: ...here.
      	* gcc.target/riscv/sat_s_add-3-i16.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-3-i16.c: ...here.
      	* gcc.target/riscv/sat_s_add-3-i32.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-3-i32.c: ...here.
      	* gcc.target/riscv/sat_s_add-3-i64.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-3-i64.c: ...here.
      	* gcc.target/riscv/sat_s_add-3-i8.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-3-i8.c: ...here.
      	* gcc.target/riscv/sat_s_add-4-i16.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-4-i16.c: ...here.
      	* gcc.target/riscv/sat_s_add-4-i32.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-4-i32.c: ...here.
      	* gcc.target/riscv/sat_s_add-4-i64.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-4-i64.c: ...here.
      	* gcc.target/riscv/sat_s_add-4-i8.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-4-i8.c: ...here.
      	* gcc.target/riscv/sat_s_add-run-1-i16.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-run-1-i16.c: ...here.
      	* gcc.target/riscv/sat_s_add-run-1-i32.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-run-1-i32.c: ...here.
      	* gcc.target/riscv/sat_s_add-run-1-i64.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-run-1-i64.c: ...here.
      	* gcc.target/riscv/sat_s_add-run-1-i8.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-run-1-i8.c: ...here.
      	* gcc.target/riscv/sat_s_add-run-2-i16.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-run-2-i16.c: ...here.
      	* gcc.target/riscv/sat_s_add-run-2-i32.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-run-2-i32.c: ...here.
      	* gcc.target/riscv/sat_s_add-run-2-i64.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-run-2-i64.c: ...here.
      	* gcc.target/riscv/sat_s_add-run-2-i8.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-run-2-i8.c: ...here.
      	* gcc.target/riscv/sat_s_add-run-3-i16.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-run-3-i16.c: ...here.
      	* gcc.target/riscv/sat_s_add-run-3-i32.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-run-3-i32.c: ...here.
      	* gcc.target/riscv/sat_s_add-run-3-i64.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-run-3-i64.c: ...here.
      	* gcc.target/riscv/sat_s_add-run-3-i8.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-run-3-i8.c: ...here.
      	* gcc.target/riscv/sat_s_add-run-4-i16.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-run-4-i16.c: ...here.
      	* gcc.target/riscv/sat_s_add-run-4-i32.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-run-4-i32.c: ...here.
      	* gcc.target/riscv/sat_s_add-run-4-i64.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-run-4-i64.c: ...here.
      	* gcc.target/riscv/sat_s_add-run-4-i8.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add-run-4-i8.c: ...here.
      	* gcc.target/riscv/sat_s_add_imm-1-1.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add_imm-1-1.c: ...here.
      	* gcc.target/riscv/sat_s_add_imm-1.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add_imm-1.c: ...here.
      	* gcc.target/riscv/sat_s_add_imm-2-1.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add_imm-2-1.c: ...here.
      	* gcc.target/riscv/sat_s_add_imm-2.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add_imm-2.c: ...here.
      	* gcc.target/riscv/sat_s_add_imm-3-1.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add_imm-3-1.c: ...here.
      	* gcc.target/riscv/sat_s_add_imm-3.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add_imm-3.c: ...here.
      	* gcc.target/riscv/sat_s_add_imm-4.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add_imm-4.c: ...here.
      	* gcc.target/riscv/sat_s_add_imm-run-1.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add_imm-run-1.c: ...here.
      	* gcc.target/riscv/sat_s_add_imm-run-2.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add_imm-run-2.c: ...here.
      	* gcc.target/riscv/sat_s_add_imm-run-3.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add_imm-run-3.c: ...here.
      	* gcc.target/riscv/sat_s_add_imm-run-4.c: Move to...
      	* gcc.target/riscv/sat/sat_s_add_imm-run-4.c: ...here.
      	* gcc.target/riscv/sat_u_add-1-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-1-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add-1-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-1-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add-1-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-1-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add-1-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-1-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add-2-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-2-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add-2-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-2-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add-2-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-2-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add-2-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-2-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add-3-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-3-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add-3-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-3-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add-3-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-3-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add-3-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-3-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add-4-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-4-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add-4-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-4-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add-4-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-4-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add-4-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-4-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add-5-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-5-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add-5-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-5-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add-5-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-5-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add-5-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-5-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add-6-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-6-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add-6-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-6-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add-6-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-6-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add-6-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-6-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-1-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-1-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-1-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-1-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-1-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-1-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-1-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-1-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-2-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-2-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-2-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-2-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-2-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-2-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-2-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-2-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-3-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-3-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-3-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-3-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-3-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-3-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-3-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-3-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-4-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-4-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-4-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-4-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-4-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-4-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-4-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-4-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-5-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-5-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-5-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-5-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-5-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-5-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-5-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-5-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-6-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-6-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-6-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-6-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-6-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-6-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add-run-6-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add-run-6-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-1-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-1-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-1-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-1-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-1-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-1-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-1-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-1-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-2-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-2-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-2-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-2-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-2-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-2-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-2-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-2-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-3-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-3-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-3-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-3-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-3-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-3-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-3-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-3-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-4-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-4-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-4-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-4-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-4-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-4-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-4-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-4-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-run-1-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-run-1-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-run-1-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-run-1-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-run-1-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-run-1-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-run-1-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-run-1-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-run-2-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-run-2-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-run-2-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-run-2-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-run-2-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-run-2-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-run-2-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-run-2-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-run-3-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-run-3-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-run-3-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-run-3-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-run-3-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-run-3-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-run-3-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-run-3-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-run-4-u16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-run-4-u16.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-run-4-u32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-run-4-u32.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-run-4-u64.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-run-4-u64.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm-run-4-u8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm-run-4-u8.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-1.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-1.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-10.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-10.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-11.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-11.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-12.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-12.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-13.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-13.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-14.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-14.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-15.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-15.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-16.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-16.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-17.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-17.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-18.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-18.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-19.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-19.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-2.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-2.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-20.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-20.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-21.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-21.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-22.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-22.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-23.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-23.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-24.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-24.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-25.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-25.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-26.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-26.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-27.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-27.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-28.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-28.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-29.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-29.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-3.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-3.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-30.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-30.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-31.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-31.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-32.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-32.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-33.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-33.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-34.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-34.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-35.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-35.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-36.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-36.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-37.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-37.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-38.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-38.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-39.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-39.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-4.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-4.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-40.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-40.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-41.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-41.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-42.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-42.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-43.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-43.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-44.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-44.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-45.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-45.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-46.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-46.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-47.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-47.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-48.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-48.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-49.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-49.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-5.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-5.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-50.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-50.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-51.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-51.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-52.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-52.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-53.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-53.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-54.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-54.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-55.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-55.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-56.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-56.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-57.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-57.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-58.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-58.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-59.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-59.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-6.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-6.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-60.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-60.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-7.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-7.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-8.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-8.c: ...here.
      	* gcc.target/riscv/sat_u_add_imm_type_check-9.c: Move to...
      	* gcc.target/riscv/sat/sat_u_add_imm_type_check-9.c: ...here.
      	* gcc.target/riscv/sat/sat_arith.h: New test.
      	* gcc.target/riscv/sat/sat_arith_data.h: New test.
      	* gcc.target/riscv/sat/scalar_sat_binary.h: New test.
      	* gcc.target/riscv/sat/scalar_sat_binary_run_xxx.h: New test.
      
      Signed-off-by: default avatarPan Li <pan2.li@intel.com>
      e0a402b3
    • Kewen Lin's avatar
      rs6000: Rework vector integer comparison in rs6000_emit_vector_compare - p5 · 96a46884
      Kewen Lin authored
      The current handlings in rs6000_emit_vector_compare is a bit
      complicated to me, especially after we emit vector float
      comparison insn with the given code directly.  So it's better
      to refactor the handlings of vector integer comparison here.
      
      This is part 5, it's to refactor all the handlings of vector
      integer comparison to make it neat.  This patch doesn't
      introduce any functionality change.
      
      gcc/ChangeLog:
      
      	* config/rs6000/rs6000.cc (rs6000_emit_vector_compare): Refactor the
      	handlings of vector integer comparison.
      96a46884
    • Kewen Lin's avatar
      rs6000: Rework vector integer comparison in rs6000_emit_vector_compare - p4 · c8e5c0e0
      Kewen Lin authored
      The current handlings in rs6000_emit_vector_compare is a bit
      complicated to me, especially after we emit vector float
      comparison insn with the given code directly.  So it's better
      to refactor the handlings of vector integer comparison here.
      
      This is part 4, it's to rework the handlings on GE/GEU/LE/LEU,
      also make the function not recursive any more.  This patch
      doesn't introduce any functionality change.
      
      gcc/ChangeLog:
      
      	* config/rs6000/rs6000.cc (rs6000_emit_vector_compare): Refine the
      	handlings for operators GE/GEU/LE/LEU.
      c8e5c0e0
    • Kewen Lin's avatar
      rs6000: Rework vector integer comparison in rs6000_emit_vector_compare - p3 · 35c83e66
      Kewen Lin authored
      The current handlings in rs6000_emit_vector_compare is a bit
      complicated to me, especially after we emit vector float
      comparison insn with the given code directly.  So it's better
      to refactor the handlings of vector integer comparison here.
      
      This is part 3, it's to refactor the handlings on NE.
      This patch doesn't introduce any functionality change.
      
      gcc/ChangeLog:
      
      	* config/rs6000/rs6000.cc (rs6000_emit_vector_compare): Refactor the
      	handlings for operator NE.
      35c83e66
    • Kewen Lin's avatar
      rs6000: Rework vector integer comparison in rs6000_emit_vector_compare - p2 · d35ee820
      Kewen Lin authored
      The current handlings in rs6000_emit_vector_compare is a bit
      complicated to me, especially after we emit vector float
      comparison insn with the given code directly.  So it's better
      to refactor the handlings of vector integer comparison here.
      
      This is part 2, it's to refactor the handlings on LT and LTU.
      This patch doesn't introduce any functionality change.
      
      gcc/ChangeLog:
      
      	* config/rs6000/rs6000.cc (rs6000_emit_vector_compare): Refine the
      	handlings for operators LT and LTU.
      d35ee820
    • Kewen Lin's avatar
      rs6000: Rework vector integer comparison in rs6000_emit_vector_compare - p1 · 311bcf9d
      Kewen Lin authored
      The current handlings in rs6000_emit_vector_compare is a bit
      complicated to me, especially after we emit vector float
      comparison insn with the given code directly.  So it's better
      to refactor the handlings of vector integer comparison here.
      
      This is part 1, it's to remove the helper function
      rs6000_emit_vector_compare_inner and move the logics into
      rs6000_emit_vector_compare.  This patch doesn't introduce any
      functionality change.
      
      gcc/ChangeLog:
      
      	* config/rs6000/rs6000.cc (rs6000_emit_vector_compare_inner): Remove.
      	(rs6000_emit_vector_compare): Emit rtx comparison for operators EQ/
      	GT/GTU directly.
      311bcf9d
    • Kewen Lin's avatar
      rs6000: Rework vector float comparison in rs6000_emit_vector_compare - p4 · 2e22882f
      Kewen Lin authored
      All kinds of vector float comparison operators have been
      supported in a rtl comparison pattern as vector.md, we can
      just emit an rtx comparison insn with the given comparison
      operator in function rs6000_emit_vector_compare instead of
      checking and handling the reverse condition cases.
      
      This is part 4, it further checks for comparison opeators
      LT/UNGE.  In rs6000_emit_vector_compare, for the handling
      of LT, it switches to use code GT, swaps operands and try
      again, it's exactly the same as what we have in vector.md:
      
      ; lt(a,b)   = gt(b,a)
      
      As to UNGE, in rs6000_emit_vector_compare, it uses reversed
      code LT and further operates on the result with one_cmpl,
      it's also the same as what's in vector.md:
      
      ; unge(a,b) = ~lt(a,b)
      
      This patch should not have any functionality change too.
      
      gcc/ChangeLog:
      
      	* config/rs6000/rs6000.cc (rs6000_emit_vector_compare_inner): Emit rtx
      	comparison for operators LT/UNGE of MODE_VECTOR_FLOAT directly.
      	(rs6000_emit_vector_compare): Move assertion of no MODE_VECTOR_FLOAT to
      	function beginning.
      2e22882f
    • Kewen Lin's avatar
      rs6000: Rework vector float comparison in rs6000_emit_vector_compare - p3 · 893ee273
      Kewen Lin authored
      All kinds of vector float comparison operators have been
      supported in a rtl comparison pattern as vector.md, we can
      just emit an rtx comparison insn with the given comparison
      operator in function rs6000_emit_vector_compare instead of
      checking and handling the reverse condition cases.
      
      This is part 3, it further checks for comparison opeators
      LE/UNGT.  In rs6000_emit_vector_compare, UNGT is handled
      with reversed code LE and inverting with one_cmpl_optab,
      LE is handled with LT ior EQ, while in vector.md, we have
      the support:
      
      ; le(a,b)   = ge(b,a)
      ; ungt(a,b) = ~le(a,b)
      
      The associated test case shows it's an improvement.
      
      gcc/ChangeLog:
      
      	* config/rs6000/rs6000.cc (rs6000_emit_vector_compare): Emit rtx
      	comparison for operators LE/UNGT of MODE_VECTOR_FLOAT directly.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/powerpc/vcond-fp.c: New test.
      893ee273
    • Kewen Lin's avatar
      rs6000: Rework vector float comparison in rs6000_emit_vector_compare - p2 · 5210565e
      Kewen Lin authored
      All kinds of vector float comparison operators have been
      supported in a rtl comparison pattern as vector.md, we can
      just emit an rtx comparison insn with the given comparison
      operator in function rs6000_emit_vector_compare instead of
      checking and handling the reverse condition cases.
      
      This is part 2, it further checks for comparison opeators
      NE/UNLE/UNLT.  In rs6000_emit_vector_compare, they are
      handled with reversed code which is queried from function
      reverse_condition_maybe_unordered and inverting with
      one_cmpl_optab.  It's the same as what we have in vector.md:
      
      ; ne(a,b)   = ~eq(a,b)
      ; unle(a,b) = ~gt(a,b)
      ; unlt(a,b) = ~ge(a,b)
      
      The operators on the right side have been supported in part 1.
      This patch should not have any functionality change too.
      
      gcc/ChangeLog:
      
      	* config/rs6000/rs6000.cc (rs6000_emit_vector_compare): Emit rtx
      	comparison for operators NE/UNLE/UNLT of MODE_VECTOR_FLOAT directly.
      5210565e
    • Kewen Lin's avatar
      rs6000: Rework vector float comparison in rs6000_emit_vector_compare - p1 · a2da2fca
      Kewen Lin authored
      All kinds of vector float comparison operators have been
      supported in a rtl comparison pattern as vector.md, we can
      just emit an rtx comparison insn with the given comparison
      operator in function rs6000_emit_vector_compare instead of
      checking and handling the reverse condition cases.
      
      This is part 1, it only handles the operators which are
      already emitted with an rtx comparison previously in function
      rs6000_emit_vector_compare_inner, they are EQ/GT/GE/ORDERED/
      UNORDERED/UNEQ/LTGT.  There is no functionality change.
      
      With this change, rs6000_emit_vector_compare_inner would
      only work for vector integer comparison handling, it would
      be cleaned up later in vector integer comparison rework.
      
      gcc/ChangeLog:
      
      	* config/rs6000/rs6000.cc (rs6000_emit_vector_compare_inner): Move
      	MODE_VECTOR_FLOAT handlings out.
      	(rs6000_emit_vector_compare): Emit rtx comparison for operators EQ/GT/
      	GE/UNORDERED/ORDERED/UNEQ/LTGT of MODE_VECTOR_FLOAT directly, and
      	adjust one call site of rs6000_emit_vector_compare_inner to
      	rs6000_emit_vector_compare.
      a2da2fca
    • GCC Administrator's avatar
      Daily bump. · 715eb661
      GCC Administrator authored
      715eb661
    • Jonathan Wakely's avatar
      libstdc++: Fix indentation in std::list::emplace_back · 71f221a8
      Jonathan Wakely authored
      libstdc++-v3/ChangeLog:
      
      	* include/bits/stl_list.h (list::emplace_back): Fix indentation.
      71f221a8
  3. Nov 14, 2024
    • Jeff Law's avatar
      [RISC-V][V2] Fix type on vector move patterns · aaada43a
      Jeff Law authored
      Updated version of my prior patch to fix type attributes on the
      pre-allocation vector move pattern.  This version just adds a suitable
      set of attributes to a second pattern that was obviously wrong.
      
      Passed on my tester for rv64 and rv32 crosses.  Bootstrapped and
      regression tested on riscv64-linux-gnu as well.
      
      --
      
      So I was looking into a horrific schedule for SAD a week or so ago and
      came across this gem.
      
      Basically we were treating a vector load as a vector move from a
      scheduling standpoint during sched1.  Naturally we didn't expose much
      ILP during sched1.  That in turn caused the register allocator to pack
      the pseudos onto the physical vector registers tightly.  regrename
      didn't do anything useful and the resulting code had too many false
      dependencies for sched2 to do anything useful.
      
      As a result we were taking many load->use stalls in x264's SAD routine.
      
      I'm confident the types are fine, but I'm a lot less sure about the
      other attributes (mode, avl_type_index, mode_idx).  If someone could
      take a look at that, it'd be greatly appreciated.
      
      There's other cases that may need similar treatment.  But I didn't want
      to muck with them until I understood those other attributes and how they
      need adjustments.
      
      In particular mov<VLS_AVL_REG:mode><P:mode>_lra appears to have the same
      problem.
      
      --
      
      gcc/
      	* config/riscv/vector.md (mov<mode> pattern/splitter): Fix type and
      	other attributes.
      	(mov<VLS_AVL_REG:mode><P:mode>_lra): Likewise.
      aaada43a
    • Harald Anlauf's avatar
      Fortran: fix passing of NULL() actual argument to character dummy [PR104819] · f70c1d51
      Harald Anlauf authored
      Ensure that character length is set and passed by the call to a procedure
      when its dummy argument is NULL() with MOLD argument present, or set length
      to either 0 or the callee's expected character length.  For assumed-rank
      dummies, use the rank of the MOLD argument.  Generate temporaries for
      passed arguments when needed.
      
      	PR fortran/104819
      
      gcc/fortran/ChangeLog:
      
      	* trans-expr.cc (conv_null_actual): Helper function to handle
      	passing of NULL() to non-optional dummy arguments of non-bind(c)
      	procedures.
      	(gfc_conv_procedure_call): Use it for character dummies.
      
      gcc/testsuite/ChangeLog:
      
      	* gfortran.dg/null_actual_6.f90: New test.
      f70c1d51
Loading