Skip to content
Snippets Groups Projects
  1. Feb 25, 2025
    • Jakub Jelinek's avatar
      openmp: Fix handling of declare target statics with array type which need destruction [PR118876] · 86a4af27
      Jakub Jelinek authored
      The following testcase ICEs because it attempts to emit the __tcfa function twice,
      once when handling the host destruction and once when handling nohost destruction.
      
      This patch fixes it by using __omp_tcfa function for the nohost case and marks it
      with the needed "omp declare target" and "omp declare target nohost" attributes.
      
      2025-02-25  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c++/118876
      	* cp-tree.h (register_dtor_fn): Add a bool argument defaulted to false.
      	* decl.cc (start_cleanup_fn): Add OMP_TARGET argument, use
      	"__omp_tcf" prefix rather than "__tcf" in that case.  Add
      	"omp declare target" and "omp declare target nohost" attributes
      	to the fndecl.
      	(register_dtor_fn): Add OMP_TARGET argument, pass it down to
      	start_cleanup_fn.
      	* decl2.cc (one_static_initialization_or_destruction): Add OMP_TARGET
      	argument, pass it down to register_dtor_fn.
      	(emit_partial_init_fini_fn): Pass omp_target to
      	one_static_initialization_or_destruction.
      	(handle_tls_init): Pass false to
      	one_static_initialization_or_destruction.
      
      	* g++.dg/gomp/pr118876.C: New test.
      86a4af27
    • Jakub Jelinek's avatar
      c++: Fix range for with PMFs [PR118923] · a41b3f54
      Jakub Jelinek authored
      The following testcases segfault because the new range for -frange-for-ext-temps
      temporary extension extends even the internal TARGET_EXPRs created by
      get_member_function_from_ptrfunc.
      
      The following patch fixes that by using get_internal_target_expr for those
      instead of force_target_expr (similarly in cp_finish_decl and
      build_comparison_op) and using force_target_expr inside of
      get_internal_target_expr.
      
      2025-02-25  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c++/118923
      	* tree.cc (get_internal_target_expr): Use force_target_expr
      	instead of build_target_expr_with_type.
      	* typeck.cc (get_member_function_from_ptrfunc): Use
      	get_internal_target_expr instead of force_target_expr.
      	* decl.cc (cp_finish_decl): Likewise.
      	* method.cc (build_comparison_op): Likewise.
      
      	* g++.dg/cpp0x/pr118923.C: New test.
      	* g++.dg/cpp1y/pr118923.C: New test.
      a41b3f54
    • GCC Administrator's avatar
      Daily bump. · 90b735b3
      GCC Administrator authored
      90b735b3
  2. Feb 24, 2025
    • Robin Dapp's avatar
      RISC-V: Include pattern stmts for dynamic LMUL computation [PR114516]. · 6be1b9e9
      Robin Dapp authored
      When scanning for program points, i.e. vector statements, we're missing
      pattern statements.  In PR114516 this becomes obvious as we choose
      LMUL=8 assuming there are only three statements but the divmod pattern
      adds another three.  Those push us beyond four registers so we need to
      switch to LMUL=4.
      
      This patch adds pattern statements to the program points which helps
      calculate a better register pressure estimate.
      
      	PR target/114516
      
      gcc/ChangeLog:
      
      	* config/riscv/riscv-vector-costs.cc (compute_estimated_lmul):
      	Add pattern statements to program points.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/vect/costmodel/riscv/rvv/pr114516.c: New test.
      6be1b9e9
    • Robin Dapp's avatar
      vect: Use original LHS type for gather pattern [PR118950]. · f3d4208e
      Robin Dapp authored
      In PR118950 we do not zero masked elements in a gather load.
      While recognizing a gather/scatter pattern we do not use the original
      type of the LHS.  This matters because the type can differ with bool
      patterns (e.g. _Bool vs unsigned char) and we don't notice the need
      for zeroing out the padding bytes.
      
      This patch just uses the original LHS's type.
      
      	PR middle-end/118950
      
      gcc/ChangeLog:
      
      	* tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Use
      	original LHS's type.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/riscv/rvv/autovec/pr118950.c: New test.
      f3d4208e
    • Jakub Jelinek's avatar
      reassoc: Fix up optimize_range_tests_to_bit_test [PR118915] · 58062796
      Jakub Jelinek authored
      The following testcase is miscompiled due to a bug in
      optimize_range_tests_to_bit_test.  It is trying to optimize
      check for a in [-34,-34] or [-26,-26] or [-6,-6] or [-4,inf] ranges.
      Another reassoc optimization folds the the test for the first
      two ranges into (a + 34U) & ~8U in [0U,0U] range, and extract_bit_test_mask
      actually has code to virtually undo it and treat that again as test
      for a being -34 or -26.  The problem is that optimize_range_tests_to_bit_test
      remembers in the type variable TREE_TYPE (ranges[i].exp); from the first
      range.  If extract_bit_test_mask doesn't do that virtual undoing of the
      BIT_AND_EXPR handling, that is just fine, the returned exp is ranges[i].exp.
      But if the first range is BIT_AND_EXPR, the type could be different, the
      BIT_AND_EXPR form has the optional cast to corresponding unsigned type
      in order to avoid introducing UB.  Now, type was used to fill in the
      max value if ranges[j].high was missing in subsequently tested range,
      and so in this particular testcase the [-4,inf] range which was
      signed int and so [-4,INT_MAX] was treated as [-4,UINT_MAX] instead.
      And we were subtracting values of 2 different types and trying to make
      sense out of that.
      
      The following patch fixes this by using the type of the low bound
      (which is always non-NULL) for the max value of the high bound instead.
      
      2025-02-24  Jakub Jelinek  <jakub@redhat.com>
      
      	PR tree-optimization/118915
      	* tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): For
      	highj == NULL_TREE use TYPE_MAX_VALUE (TREE_TYPE (lowj)) rather
      	than TYPE_MAX_VALUE (type).
      
      	* gcc.c-torture/execute/pr118915.c: New test.
      58062796
    • Richard Biener's avatar
      tree-optimization/118973 - stray abnormal edge after DCE · 9e4c57f7
      Richard Biener authored
      DCE preserves stmts performing abnormal control flow transfer but
      currently has an exception for replaceable allocations and cxa_atexit
      calls.  That results in a broken CFG since DCE isn't set up to prune
      abnormal edges possibly hanging off those.
      
      While we could try to add this handling, the following is the safe
      fix at this point and more suitable for backporting.
      
      	PR tree-optimization/118973
      	* tree-ssa-dce.cc (mark_stmt_if_obviously_necessary): Calls
      	that alter control flow in unpredictable ways need to be
      	preserved.
      
      	* g++.dg/torture/pr118973.C: New testcase.
      9e4c57f7
    • Jakub Jelinek's avatar
      openmp: Fix diagnostics typo [PR118993] · 27ebd2a5
      Jakub Jelinek authored
      There is a typo in one of the OpenMP gimplification diagnostics messages.
      The following patch fixes that and adjusts tests which just copied that
      message including typo to dg-warning regexps in 2 tests.
      
      2025-02-24  Jakub Jelinek  <jakub@redhat.com>
      
      	PR middle-end/118993
      	* gimplify.cc (gimplify_scan_omp_clauses): Fix diagnostics typo,
      	undfined -> undefined.
      
      	* c-c++-common/gomp/allocate-18.c: Adjust dg-warning regex for
      	diagnostics typo fix.
      	* gfortran.dg/gomp/allocate-clause.f90: Likewise.
      27ebd2a5
    • Jakub Jelinek's avatar
      Use nonnull_if_nonzero attribute rather than nonnull on various builtins [PR117023] · 0d590d21
      Jakub Jelinek authored
      On top of the
      https://gcc.gnu.org/pipermail/gcc-patches/2024-November/668554.html
      https://gcc.gnu.org/pipermail/gcc-patches/2024-November/668699.html
      https://gcc.gnu.org/pipermail/gcc-patches/2024-November/668700.html
      patches the following patch adds nonnull_if_nonzero attribute(s) to
      various builtins instead of or in addition to nonnull attribute.
      
      The patch adjusts builtins (when we have them) corresponding to the APIs
      mentioned in the C2Y N3322 paper:
      1) strndup and memset get one nonnull_if_nonzero attribute instead of
         nonnull
      2) memcpy, memmove, strncpy, memcmp, strncmp get two nonnull_if_nonzero
         attributes instead of nonnull
      3) strncat has nonnull without argument changed to nonnull (1) and
         gets one nonnull_if_nonzero for the src argument (maybe it needs
         to be clarified in C2Y, but I really think first argument to strncat
         and wcsncat shouldn't be NULL even for n == 0, because NULL doesn't
         point to NULL terminated string and one can't append anything to it;
         and various implementations in the wild including glibc will crash
         with NULL first argument (x86_64 avx+ doesn't though)
      
      Such changes are done also to the _chk suffixed counterparts of the
      builtins.
      
      Furthermore I've changed a couple of builtins for POSIX functions which
      aren't covered by ISO C, but I'd expect if/when POSIX incorporates C2Y
      it would do the same changes.  In particular
      
      4) strnlen gets one nonnull_if_nonzero instead of nonnull
      5) mempcpy and stpncpy get two nonnull_if_nonzero instead of nonnull
         and lose returns_nonnull attribute; this is kind of unfortunate
         but I think in the spirit of N3322 mempcpy (NULL, src, 0) should
         return NULL (i.e. dest + n aka NULL + 0, now valid) and it is hard to
         express returns non-NULL if first argument is non-NULL or third argument
         is non-zero
      
      I'm not really sure about fread/fwrite, N3322 doesn't mention those,
      can the first argument be NULL if third argument is 0?  What about
      if second argument is 0?  Can the fourth argument be NULL in such cases?
      
      And of course, when not using builtins the glibc headers will affect stuff
      too, so we'll need to wait for N3322 implementation there too (possibly
      by dropping the nonnull attributes and perhaps conditionally replacing them
      with this new one if the compiler supports them).
      
      2025-02-24  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c/117023
      gcc/
      	* builtin-attrs.def (ATTR_NONNULL_IF_NONZERO): New DEF_ATTR_IDENT.
      	(ATTR_NOTHROW_NONNULL_IF12_LEAF, ATTR_NOTHROW_NONNULL_IF13_LEAF,
      	ATTR_NOTHROW_NONNULL_IF123_LEAF, ATTR_NOTHROW_NONNULL_IF23_LEAF,
      	ATTR_NOTHROW_NONNULL_1_IF23_LEAF, ATTR_PURE_NOTHROW_NONNULL_IF12_LEAF,
      	ATTR_PURE_NOTHROW_NONNULL_IF13_LEAF,
      	ATTR_PURE_NOTHROW_NONNULL_IF123_LEAF,
      	ATTR_WARN_UNUSED_RESULT_NOTHROW_NONNULL_IF12_LEAF,
      	ATTR_MALLOC_WARN_UNUSED_RESULT_NOTHROW_NONNULL_IF12_LEAF): New
      	DEF_ATTR_TREE_LIST.
      	* builtins.def (BUILT_IN_STRNDUP): Use
      	ATTR_MALLOC_WARN_UNUSED_RESULT_NOTHROW_NONNULL_IF12_LEAF instead of
      	ATTR_MALLOC_WARN_UNUSED_RESULT_NOTHROW_NONNULL_LEAF.
      	(BUILT_IN_STRNCAT, BUILT_IN_STRNCAT_CHK): Use
      	ATTR_NOTHROW_NONNULL_1_IF23_LEAF instead of ATTR_NOTHROW_NONNULL_LEAF.
      	(BUILT_IN_BCOPY, BUILT_IN_MEMCPY, BUILT_IN_MEMCPY_CHK,
      	BUILT_IN_MEMMOVE, BUILT_IN_MEMMOVE_CHK,  BUILT_IN_STRNCPY,
      	BUILT_IN_STRNCPY_CHK): Use ATTR_NOTHROW_NONNULL_IF123_LEAF instead of
      	ATTR_NOTHROW_NONNULL_LEAF.
      	(BUILT_IN_MEMPCPY, BUILT_IN_MEMPCPY_CHK, BUILT_IN_STPNCPY,
      	BUILT_IN_STPNCPY_CHK): Use ATTR_NOTHROW_NONNULL_IF123_LEAF instead of
      	ATTR_RETNONNULL_NOTHROW_LEAF.
      	(BUILT_IN_BZERO, BUILT_IN_MEMSET, BUILT_IN_MEMSET_CHK): Use
      	ATTR_NOTHROW_NONNULL_IF13_LEAF instead of ATTR_NOTHROW_NONNULL_LEAF.
      	(BUILT_IN_BCMP, BUILT_IN_MEMCMP, BUILT_IN_STRNCASECMP,
      	BUILT_IN_STRNCMP): Use ATTR_PURE_NOTHROW_NONNULL_IF123_LEAF instead of
      	ATTR_PURE_NOTHROW_NONNULL_LEAF.
      	(BUILT_IN_STRNLEN): Use ATTR_PURE_NOTHROW_NONNULL_IF12_LEAF instead of
      	ATTR_PURE_NOTHROW_NONNULL_LEAF.
      	(BUILT_IN_MEMCHR): Use ATTR_PURE_NOTHROW_NONNULL_IF13_LEAF instead of
      	ATTR_PURE_NOTHROW_NONNULL_LEAF.
      gcc/testsuite/
      	* gcc.dg/builtins-nonnull.c (test_memfuncs, test_memfuncs_chk,
      	test_strfuncs, test_strfuncs_chk): Add if (n == 0) return; at the
      	start of the functions.
      	* gcc.dg/Wnonnull-2.c: Copy __builtin_* call statements where
      	appropriate 3 times, once with 0 length, once with n and once with
      	non-zero constant and expect warning only in the third case.
      	Formatting fixes.
      	* gcc.dg/Wnonnull-3.c: Copy __builtin_* call statements where
      	appropriate 3 times, once with 0 length, once with n and once with
      	n guarded with n != 0 and expect warning only in the third case.
      	Formatting fixes.
      	* gcc.dg/nonnull-3.c (foo): Use 16 instead of 0 in the calls added
      	for PR80936.
      	* gcc.dg/nonnull-11.c: New test.
      	* c-c++-common/ubsan/nonnull-1.c: Don't expect runtime diagnostics
      	for the __builtin_memcpy call.
      	* gcc.dg/tree-ssa/pr78154.c (f): Add dn argument and return early
      	if it is NULL.  Duplicate cases of builtins which have the first
      	argument changed from nonnull to nonnull_if_nonzero except stpncpy,
      	once with dn as first argument instead of d and once with constant
      	non-zero count rather than n.  Disable the stpncpy non-null check.
      	* gcc.dg/Wbuiltin-declaration-mismatch-14.c (test_builtin_calls):
      	Triplicate the strncmp calls, once with 1 last argument and expect
      	warning, once with n last argument and don't expect warning and
      	once with 0 last argument and don't expect warning.
      	* gcc.dg/Wbuiltin-declaration-mismatch-15.c (test_builtin_calls_fe):
      	Likewise.
      0d590d21
    • Jakub Jelinek's avatar
      analyzer: Handle nonnull_if_nonzero attribute [PR117023] · 206cb6c1
      Jakub Jelinek authored
      On top of the
      https://gcc.gnu.org/pipermail/gcc-patches/2024-November/668554.html
      patch which introduces the nonnull_if_nonzero attribute (because
      C2Y is allowing NULL arguments on various calls like memcpy, memset,
      strncpy etc. as long as the count is 0) the following patch adds just
      limited handling of the attribute in the analyzer.
      
      For nonnull attribute(s) we have the get_nonnull_args helper which
      returns a bitmap, for nonnull_if_nonzero a function would need to
      return a hash_map or something similar, I think it is better to
      handle the attributes one by one.  This patch just handles the
      non-zero INTEGER_CST (integer_nonzerop) count arguments, in other places
      the above patch uses ranger to some extent, but I'm not familiar enough
      with the analyzer to know if one can use the ranger, or should somehow
      explain in data structures the conditional nature of the nonnull property,
      the argument is nonnull only if some other argument is nonzero.
      
      Also, analyzer uses get_nonnull_args in another spot when entering a frame,
      not sure if anything can be done there (note the conditional nonnull
      somehow, pass from callers if the argument is nonzero, ...).
      
      Note, the testsuite changes aren't strictly necessary with just
      the above and this patch, but will be with a patch I'm going to post
      soon.
      
      2025-02-24  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c/117023
      gcc/analyzer/
      	* sm-malloc.cc (malloc_state_machine::handle_nonnull): New private
      	method.
      	(malloc_state_machine::on_stmt): Use it for nonnull attribute arguments.
      	Handle also nonnull_if_nonzero attributes.
      gcc/testsuite/
      	* c-c++-common/analyzer/call-summaries-malloc.c
      	(test_use_without_check): Pass 4 rather than sz to memset.
      	* c-c++-common/analyzer/strncpy-1.c (test_null_dst,
      	test_null_src): Pass 42 rather than count to strncpy.
      206cb6c1
    • Lino Hsing-Yu Peng's avatar
      RISC-V: Fix .cfi_offset directive when push/pop in zcmp · 4dcd3c77
      Lino Hsing-Yu Peng authored
      The incorrect cfi directive info breaks stack unwind in try/catch/cxa.
      
      Before patch:
        cm.push	{ra, s0-s2}, -16
        .cfi_offset 1, -12
        .cfi_offset 8, -8
        .cfi_offset 18, -4
      
      After patch:
        cm.push	{ra, s0-s2}, -16
        .cfi_offset 1, -16
        .cfi_offset 8, -12
        .cfi_offset 9, -8
        .cfi_offset 18, -4
      
      gcc/ChangeLog:
      
      	* config/riscv/riscv.cc: Set multi push regs bits.
      
      gcc/testsuite/ChangeLog:
      	* gcc.target/riscv/zcmp_push_gpr.c: New test.
      4dcd3c77
    • GCC Administrator's avatar
      Daily bump. · 7cfb2c88
      GCC Administrator authored
      7cfb2c88
  3. Feb 23, 2025
  4. Feb 22, 2025
    • Jonathan Wakely's avatar
      libstdc++: Fix bootstrap failure with --enable-vtable-verify [PR118981] · d4a777d0
      Jonathan Wakely authored
      The compiler emits code with init_priority(99) for -fvtable-verify=std
      and that creates a section conflict with the uses of init_priority(99)
      that I recently added to src/c++20/tzdb.cc.
      
      Change tzdb.cc to use a different priority to avoid the conflict.
      
      libstdc++-v3/ChangeLog:
      
      	PR c++/118981
      	* src/c++20/tzdb.cc: Use init_priority(98) instead of
      	init_priority(99).
      d4a777d0
    • Thomas Schwinge's avatar
      Turn test cases into UNSUPPORTED if running into 'sorry, unimplemented:... · 0128fa8b
      Thomas Schwinge authored
      Turn test cases into UNSUPPORTED if running into 'sorry, unimplemented: dynamic stack allocation not supported'
      
      In Subversion r217296 (Git commit e2acc079)
      "Testsuite alloca fixes for ptx", effective-target 'alloca' was added to mark
      up test cases that run into the nvptx back end's non-support of dynamic stack
      allocation.  (Later, nvptx gained conditional support for that in
      commit 3861d362
      "nvptx: PTX 'alloca' for '-mptx=7.3'+, '-march=sm_52'+ [PR65181]", but on the
      other hand, in commit f93a612f
      "bpf: liberate R9 for general register allocation", the BPF back end joined
      "the list of targets that do not support alloca in target-support.exp".
      
      Manually maintaining the list of test cases requiring effective-target 'alloca'
      is notoriously hard, gets out of date quickly: new test cases added to the test
      suite may need to be analyzed and annotated, and over time annotations also may
      need to be removed, in cases where the compiler learns to optimize out
      'alloca'/VLA usage, for example.  This commit replaces (99 % of) the manual
      annotations with an automatic scheme: turn test cases into UNSUPPORTED if
      running into 'sorry, unimplemented: dynamic stack allocation not supported'.
      
      	gcc/testsuite/
      	* lib/target-supports.exp (check_effective_target_alloca):
      	Gracefully handle the case that we've not be called (indirectly)
      	from 'dg-test'.
      	* lib/gcc-dg.exp (proc gcc-dg-prune): Turn
      	'sorry, unimplemented: dynamic stack allocation not supported' into
      	UNSUPPORTED.
      	* c-c++-common/Walloca-larger-than.c: Don't
      	'dg-require-effective-target alloca'.
      	* c-c++-common/Warray-bounds-9.c: Likewise.
      	* c-c++-common/Warray-bounds.c: Likewise.
      	* c-c++-common/Wdangling-pointer-2.c: Likewise.
      	* c-c++-common/Wdangling-pointer-4.c: Likewise.
      	* c-c++-common/Wdangling-pointer-5.c: Likewise.
      	* c-c++-common/Wdangling-pointer.c: Likewise.
      	* c-c++-common/Wimplicit-fallthrough-7.c: Likewise.
      	* c-c++-common/Wsizeof-pointer-memaccess1.c: Likewise.
      	* c-c++-common/Wsizeof-pointer-memaccess2.c: Likewise.
      	* c-c++-common/Wstringop-truncation.c: Likewise.
      	* c-c++-common/Wunused-var-6.c: Likewise.
      	* c-c++-common/Wunused-var-8.c: Likewise.
      	* c-c++-common/analyzer/alloca-leak.c: Likewise.
      	* c-c++-common/analyzer/allocation-size-multiline-2.c: Likewise.
      	* c-c++-common/analyzer/allocation-size-multiline-3.c: Likewise.
      	* c-c++-common/analyzer/capacity-1.c: Likewise.
      	* c-c++-common/analyzer/capacity-3.c: Likewise.
      	* c-c++-common/analyzer/imprecise-floating-point-1.c: Likewise.
      	* c-c++-common/analyzer/infinite-recursion-alloca.c: Likewise.
      	* c-c++-common/analyzer/malloc-callbacks.c: Likewise.
      	* c-c++-common/analyzer/malloc-paths-8.c: Likewise.
      	* c-c++-common/analyzer/out-of-bounds-5.c: Likewise.
      	* c-c++-common/analyzer/out-of-bounds-diagram-11.c: Likewise.
      	* c-c++-common/analyzer/uninit-alloca.c: Likewise.
      	* c-c++-common/analyzer/write-to-string-literal-5.c: Likewise.
      	* c-c++-common/asan/alloca_loop_unpoisoning.c: Likewise.
      	* c-c++-common/auto-init-11.c: Likewise.
      	* c-c++-common/auto-init-12.c: Likewise.
      	* c-c++-common/auto-init-15.c: Likewise.
      	* c-c++-common/auto-init-16.c: Likewise.
      	* c-c++-common/builtins.c: Likewise.
      	* c-c++-common/dwarf2/vla1.c: Likewise.
      	* c-c++-common/gomp/pr61486-2.c: Likewise.
      	* c-c++-common/torture/builtin-clear-padding-4.c: Likewise.
      	* c-c++-common/torture/strub-run3.c: Likewise.
      	* c-c++-common/torture/strub-run4.c: Likewise.
      	* c-c++-common/torture/strub-run4c.c: Likewise.
      	* c-c++-common/torture/strub-run4d.c: Likewise.
      	* c-c++-common/torture/strub-run4i.c: Likewise.
      	* g++.dg/Walloca1.C: Likewise.
      	* g++.dg/Walloca2.C: Likewise.
      	* g++.dg/cpp0x/pr70338.C: Likewise.
      	* g++.dg/cpp1y/lambda-generic-vla1.C: Likewise.
      	* g++.dg/cpp1y/vla10.C: Likewise.
      	* g++.dg/cpp1y/vla2.C: Likewise.
      	* g++.dg/cpp1y/vla6.C: Likewise.
      	* g++.dg/cpp1y/vla8.C: Likewise.
      	* g++.dg/debug/debug5.C: Likewise.
      	* g++.dg/debug/debug6.C: Likewise.
      	* g++.dg/debug/pr54828.C: Likewise.
      	* g++.dg/diagnostic/pr70105.C: Likewise.
      	* g++.dg/eh/cleanup5.C: Likewise.
      	* g++.dg/eh/spbp.C: Likewise.
      	* g++.dg/ext/builtin_alloca.C: Likewise.
      	* g++.dg/ext/tmplattr9.C: Likewise.
      	* g++.dg/ext/vla10.C: Likewise.
      	* g++.dg/ext/vla11.C: Likewise.
      	* g++.dg/ext/vla12.C: Likewise.
      	* g++.dg/ext/vla15.C: Likewise.
      	* g++.dg/ext/vla16.C: Likewise.
      	* g++.dg/ext/vla17.C: Likewise.
      	* g++.dg/ext/vla23.C: Likewise.
      	* g++.dg/ext/vla3.C: Likewise.
      	* g++.dg/ext/vla6.C: Likewise.
      	* g++.dg/ext/vla7.C: Likewise.
      	* g++.dg/init/array24.C: Likewise.
      	* g++.dg/init/new47.C: Likewise.
      	* g++.dg/init/pr55497.C: Likewise.
      	* g++.dg/opt/pr78201.C: Likewise.
      	* g++.dg/template/vla2.C: Likewise.
      	* g++.dg/torture/Wsizeof-pointer-memaccess1.C: Likewise.
      	* g++.dg/torture/Wsizeof-pointer-memaccess2.C: Likewise.
      	* g++.dg/torture/pr62127.C: Likewise.
      	* g++.dg/torture/pr67055.C: Likewise.
      	* g++.dg/torture/stackalign/eh-alloca-1.C: Likewise.
      	* g++.dg/torture/stackalign/eh-inline-2.C: Likewise.
      	* g++.dg/torture/stackalign/eh-vararg-1.C: Likewise.
      	* g++.dg/torture/stackalign/eh-vararg-2.C: Likewise.
      	* g++.dg/warn/Wplacement-new-size-5.C: Likewise.
      	* g++.dg/warn/Wsizeof-pointer-memaccess-1.C: Likewise.
      	* g++.dg/warn/Wvla-1.C: Likewise.
      	* g++.dg/warn/Wvla-3.C: Likewise.
      	* g++.old-deja/g++.ext/array2.C: Likewise.
      	* g++.old-deja/g++.ext/constructor.C: Likewise.
      	* g++.old-deja/g++.law/builtin1.C: Likewise.
      	* g++.old-deja/g++.other/crash12.C: Likewise.
      	* g++.old-deja/g++.other/eh3.C: Likewise.
      	* g++.old-deja/g++.pt/array6.C: Likewise.
      	* g++.old-deja/g++.pt/dynarray.C: Likewise.
      	* gcc.c-torture/compile/20000923-1.c: Likewise.
      	* gcc.c-torture/compile/20030224-1.c: Likewise.
      	* gcc.c-torture/compile/20071108-1.c: Likewise.
      	* gcc.c-torture/compile/20071117-1.c: Likewise.
      	* gcc.c-torture/compile/900313-1.c: Likewise.
      	* gcc.c-torture/compile/parms.c: Likewise.
      	* gcc.c-torture/compile/pr17397.c: Likewise.
      	* gcc.c-torture/compile/pr35006.c: Likewise.
      	* gcc.c-torture/compile/pr42956.c: Likewise.
      	* gcc.c-torture/compile/pr51354.c: Likewise.
      	* gcc.c-torture/compile/pr52714.c: Likewise.
      	* gcc.c-torture/compile/pr55851.c: Likewise.
      	* gcc.c-torture/compile/pr77754-1.c: Likewise.
      	* gcc.c-torture/compile/pr77754-2.c: Likewise.
      	* gcc.c-torture/compile/pr77754-3.c: Likewise.
      	* gcc.c-torture/compile/pr77754-4.c: Likewise.
      	* gcc.c-torture/compile/pr77754-5.c: Likewise.
      	* gcc.c-torture/compile/pr77754-6.c: Likewise.
      	* gcc.c-torture/compile/pr78439.c: Likewise.
      	* gcc.c-torture/compile/pr79413.c: Likewise.
      	* gcc.c-torture/compile/pr82564.c: Likewise.
      	* gcc.c-torture/compile/pr87110.c: Likewise.
      	* gcc.c-torture/compile/pr99787-1.c: Likewise.
      	* gcc.c-torture/compile/vla-const-1.c: Likewise.
      	* gcc.c-torture/compile/vla-const-2.c: Likewise.
      	* gcc.c-torture/execute/20010209-1.c: Likewise.
      	* gcc.c-torture/execute/20020314-1.c: Likewise.
      	* gcc.c-torture/execute/20020412-1.c: Likewise.
      	* gcc.c-torture/execute/20021113-1.c: Likewise.
      	* gcc.c-torture/execute/20040223-1.c: Likewise.
      	* gcc.c-torture/execute/20040308-1.c: Likewise.
      	* gcc.c-torture/execute/20040811-1.c: Likewise.
      	* gcc.c-torture/execute/20070824-1.c: Likewise.
      	* gcc.c-torture/execute/20070919-1.c: Likewise.
      	* gcc.c-torture/execute/built-in-setjmp.c: Likewise.
      	* gcc.c-torture/execute/pr22061-1.c: Likewise.
      	* gcc.c-torture/execute/pr43220.c: Likewise.
      	* gcc.c-torture/execute/pr82210.c: Likewise.
      	* gcc.c-torture/execute/pr86528.c: Likewise.
      	* gcc.c-torture/execute/vla-dealloc-1.c: Likewise.
      	* gcc.dg/20001012-2.c: Likewise.
      	* gcc.dg/20020415-1.c: Likewise.
      	* gcc.dg/20030331-2.c: Likewise.
      	* gcc.dg/20101010-1.c: Likewise.
      	* gcc.dg/Walloca-1.c: Likewise.
      	* gcc.dg/Walloca-10.c: Likewise.
      	* gcc.dg/Walloca-11.c: Likewise.
      	* gcc.dg/Walloca-12.c: Likewise.
      	* gcc.dg/Walloca-13.c: Likewise.
      	* gcc.dg/Walloca-14.c: Likewise.
      	* gcc.dg/Walloca-15.c: Likewise.
      	* gcc.dg/Walloca-2.c: Likewise.
      	* gcc.dg/Walloca-3.c: Likewise.
      	* gcc.dg/Walloca-4.c: Likewise.
      	* gcc.dg/Walloca-5.c: Likewise.
      	* gcc.dg/Walloca-6.c: Likewise.
      	* gcc.dg/Walloca-7.c: Likewise.
      	* gcc.dg/Walloca-8.c: Likewise.
      	* gcc.dg/Walloca-9.c: Likewise.
      	* gcc.dg/Walloca-larger-than-2.c: Likewise.
      	* gcc.dg/Walloca-larger-than-3.c: Likewise.
      	* gcc.dg/Walloca-larger-than-4.c: Likewise.
      	* gcc.dg/Walloca-larger-than.c: Likewise.
      	* gcc.dg/Warray-bounds-22.c: Likewise.
      	* gcc.dg/Warray-bounds-41.c: Likewise.
      	* gcc.dg/Warray-bounds-46.c: Likewise.
      	* gcc.dg/Warray-bounds-48-novec.c: Likewise.
      	* gcc.dg/Warray-bounds-48.c: Likewise.
      	* gcc.dg/Warray-bounds-50.c: Likewise.
      	* gcc.dg/Warray-bounds-63.c: Likewise.
      	* gcc.dg/Warray-bounds-66.c: Likewise.
      	* gcc.dg/Wdangling-pointer.c: Likewise.
      	* gcc.dg/Wfree-nonheap-object-2.c: Likewise.
      	* gcc.dg/Wfree-nonheap-object.c: Likewise.
      	* gcc.dg/Wrestrict-17.c: Likewise.
      	* gcc.dg/Wrestrict.c: Likewise.
      	* gcc.dg/Wreturn-local-addr-2.c: Likewise.
      	* gcc.dg/Wreturn-local-addr-3.c: Likewise.
      	* gcc.dg/Wreturn-local-addr-4.c: Likewise.
      	* gcc.dg/Wreturn-local-addr-6.c: Likewise.
      	* gcc.dg/Wsizeof-pointer-memaccess1.c: Likewise.
      	* gcc.dg/Wstack-usage.c: Likewise.
      	* gcc.dg/Wstrict-aliasing-bogus-vla-1.c: Likewise.
      	* gcc.dg/Wstrict-overflow-27.c: Likewise.
      	* gcc.dg/Wstringop-overflow-15.c: Likewise.
      	* gcc.dg/Wstringop-overflow-23.c: Likewise.
      	* gcc.dg/Wstringop-overflow-25.c: Likewise.
      	* gcc.dg/Wstringop-overflow-27.c: Likewise.
      	* gcc.dg/Wstringop-overflow-3.c: Likewise.
      	* gcc.dg/Wstringop-overflow-39.c: Likewise.
      	* gcc.dg/Wstringop-overflow-56.c: Likewise.
      	* gcc.dg/Wstringop-overflow-57.c: Likewise.
      	* gcc.dg/Wstringop-overflow-67.c: Likewise.
      	* gcc.dg/Wstringop-overflow-71.c: Likewise.
      	* gcc.dg/Wstringop-truncation-3.c: Likewise.
      	* gcc.dg/Wvla-larger-than-1.c: Likewise.
      	* gcc.dg/Wvla-larger-than-2.c: Likewise.
      	* gcc.dg/Wvla-larger-than-3.c: Likewise.
      	* gcc.dg/Wvla-larger-than-4.c: Likewise.
      	* gcc.dg/Wvla-larger-than-5.c: Likewise.
      	* gcc.dg/analyzer/boxed-malloc-1.c: Likewise.
      	* gcc.dg/analyzer/call-summaries-2.c: Likewise.
      	* gcc.dg/analyzer/malloc-1.c: Likewise.
      	* gcc.dg/analyzer/malloc-reuse.c: Likewise.
      	* gcc.dg/analyzer/out-of-bounds-diagram-12.c: Likewise.
      	* gcc.dg/analyzer/pr93355-localealias.c: Likewise.
      	* gcc.dg/analyzer/putenv-1.c: Likewise.
      	* gcc.dg/analyzer/taint-alloc-1.c: Likewise.
      	* gcc.dg/analyzer/torture/pr93373.c: Likewise.
      	* gcc.dg/analyzer/torture/ubsan-1.c: Likewise.
      	* gcc.dg/analyzer/vla-1.c: Likewise.
      	* gcc.dg/atomic/stdatomic-vm.c: Likewise.
      	* gcc.dg/attr-alloc_size-6.c: Likewise.
      	* gcc.dg/attr-alloc_size-7.c: Likewise.
      	* gcc.dg/attr-alloc_size-8.c: Likewise.
      	* gcc.dg/attr-alloc_size-9.c: Likewise.
      	* gcc.dg/attr-noipa.c: Likewise.
      	* gcc.dg/auto-init-uninit-36.c: Likewise.
      	* gcc.dg/auto-init-uninit-9.c: Likewise.
      	* gcc.dg/auto-type-1.c: Likewise.
      	* gcc.dg/builtin-alloc-size.c: Likewise.
      	* gcc.dg/builtin-dynamic-alloc-size.c: Likewise.
      	* gcc.dg/builtin-dynamic-object-size-1.c: Likewise.
      	* gcc.dg/builtin-dynamic-object-size-2.c: Likewise.
      	* gcc.dg/builtin-dynamic-object-size-3.c: Likewise.
      	* gcc.dg/builtin-dynamic-object-size-4.c: Likewise.
      	* gcc.dg/builtin-object-size-1.c: Likewise.
      	* gcc.dg/builtin-object-size-2.c: Likewise.
      	* gcc.dg/builtin-object-size-3.c: Likewise.
      	* gcc.dg/builtin-object-size-4.c: Likewise.
      	* gcc.dg/builtins-64.c: Likewise.
      	* gcc.dg/builtins-68.c: Likewise.
      	* gcc.dg/c23-auto-2.c: Likewise.
      	* gcc.dg/c99-const-expr-13.c: Likewise.
      	* gcc.dg/c99-vla-1.c: Likewise.
      	* gcc.dg/fold-alloca-1.c: Likewise.
      	* gcc.dg/gomp/pr30494.c: Likewise.
      	* gcc.dg/gomp/vla-2.c: Likewise.
      	* gcc.dg/gomp/vla-3.c: Likewise.
      	* gcc.dg/gomp/vla-4.c: Likewise.
      	* gcc.dg/gomp/vla-5.c: Likewise.
      	* gcc.dg/graphite/pr99085.c: Likewise.
      	* gcc.dg/guality/guality.c: Likewise.
      	* gcc.dg/lto/pr80778_0.c: Likewise.
      	* gcc.dg/nested-func-10.c: Likewise.
      	* gcc.dg/nested-func-12.c: Likewise.
      	* gcc.dg/nested-func-13.c: Likewise.
      	* gcc.dg/nested-func-14.c: Likewise.
      	* gcc.dg/nested-func-15.c: Likewise.
      	* gcc.dg/nested-func-16.c: Likewise.
      	* gcc.dg/nested-func-17.c: Likewise.
      	* gcc.dg/nested-func-9.c: Likewise.
      	* gcc.dg/packed-vla.c: Likewise.
      	* gcc.dg/pr100225.c: Likewise.
      	* gcc.dg/pr25682.c: Likewise.
      	* gcc.dg/pr27301.c: Likewise.
      	* gcc.dg/pr31507-1.c: Likewise.
      	* gcc.dg/pr33238.c: Likewise.
      	* gcc.dg/pr41470.c: Likewise.
      	* gcc.dg/pr49120.c: Likewise.
      	* gcc.dg/pr50764.c: Likewise.
      	* gcc.dg/pr51491-2.c: Likewise.
      	* gcc.dg/pr51990-2.c: Likewise.
      	* gcc.dg/pr51990.c: Likewise.
      	* gcc.dg/pr59011.c: Likewise.
      	* gcc.dg/pr59523.c: Likewise.
      	* gcc.dg/pr61561.c: Likewise.
      	* gcc.dg/pr78468.c: Likewise.
      	* gcc.dg/pr78902.c: Likewise.
      	* gcc.dg/pr79972.c: Likewise.
      	* gcc.dg/pr82875.c: Likewise.
      	* gcc.dg/pr83844.c: Likewise.
      	* gcc.dg/pr84131.c: Likewise.
      	* gcc.dg/pr87099.c: Likewise.
      	* gcc.dg/pr87320.c: Likewise.
      	* gcc.dg/pr89045.c: Likewise.
      	* gcc.dg/pr91014.c: Likewise.
      	* gcc.dg/pr93986.c: Likewise.
      	* gcc.dg/pr98721-1.c: Likewise.
      	* gcc.dg/pr99122-2.c: Likewise.
      	* gcc.dg/shrink-wrap-alloca.c: Likewise.
      	* gcc.dg/sso-14.c: Likewise.
      	* gcc.dg/strlenopt-62.c: Likewise.
      	* gcc.dg/strlenopt-83.c: Likewise.
      	* gcc.dg/strlenopt-84.c: Likewise.
      	* gcc.dg/strlenopt-91.c: Likewise.
      	* gcc.dg/torture/Wsizeof-pointer-memaccess1.c: Likewise.
      	* gcc.dg/torture/calleesave-sse.c: Likewise.
      	* gcc.dg/torture/pr48953.c: Likewise.
      	* gcc.dg/torture/pr71881.c: Likewise.
      	* gcc.dg/torture/pr71901.c: Likewise.
      	* gcc.dg/torture/pr78742.c: Likewise.
      	* gcc.dg/torture/pr92088-1.c: Likewise.
      	* gcc.dg/torture/pr92088-2.c: Likewise.
      	* gcc.dg/torture/pr93124.c: Likewise.
      	* gcc.dg/torture/pr94479.c: Likewise.
      	* gcc.dg/torture/stackalign/alloca-1.c: Likewise.
      	* gcc.dg/torture/stackalign/inline-2.c: Likewise.
      	* gcc.dg/torture/stackalign/nested-3.c: Likewise.
      	* gcc.dg/torture/stackalign/vararg-1.c: Likewise.
      	* gcc.dg/torture/stackalign/vararg-2.c: Likewise.
      	* gcc.dg/tree-ssa/20030807-2.c: Likewise.
      	* gcc.dg/tree-ssa/20080530.c: Likewise.
      	* gcc.dg/tree-ssa/alias-37.c: Likewise.
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-22.c: Likewise.
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-25.c: Likewise.
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Likewise.
      	* gcc.dg/tree-ssa/loop-interchange-15.c: Likewise.
      	* gcc.dg/tree-ssa/pr23848-1.c: Likewise.
      	* gcc.dg/tree-ssa/pr23848-2.c: Likewise.
      	* gcc.dg/tree-ssa/pr23848-3.c: Likewise.
      	* gcc.dg/tree-ssa/pr23848-4.c: Likewise.
      	* gcc.dg/uninit-32.c: Likewise.
      	* gcc.dg/uninit-36.c: Likewise.
      	* gcc.dg/uninit-39.c: Likewise.
      	* gcc.dg/uninit-41.c: Likewise.
      	* gcc.dg/uninit-9-O0.c: Likewise.
      	* gcc.dg/uninit-9.c: Likewise.
      	* gcc.dg/uninit-pr100250.c: Likewise.
      	* gcc.dg/uninit-pr101300.c: Likewise.
      	* gcc.dg/uninit-pr101494.c: Likewise.
      	* gcc.dg/uninit-pr98583.c: Likewise.
      	* gcc.dg/vla-2.c: Likewise.
      	* gcc.dg/vla-22.c: Likewise.
      	* gcc.dg/vla-24.c: Likewise.
      	* gcc.dg/vla-3.c: Likewise.
      	* gcc.dg/vla-4.c: Likewise.
      	* gcc.dg/vla-stexp-1.c: Likewise.
      	* gcc.dg/vla-stexp-2.c: Likewise.
      	* gcc.dg/vla-stexp-4.c: Likewise.
      	* gcc.dg/vla-stexp-5.c: Likewise.
      	* gcc.dg/winline-7.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-1.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-10.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-2.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-3.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-4.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-5.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-6.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-7.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-8.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-9.c: Likewise.
      	* gcc.target/arc/interrupt-6.c: Likewise.
      	* gcc.target/i386/pr80969-3.c: Likewise.
      	* gcc.target/loongarch/stack-check-alloca-1.c: Likewise.
      	* gcc.target/loongarch/stack-check-alloca-2.c: Likewise.
      	* gcc.target/loongarch/stack-check-alloca-3.c: Likewise.
      	* gcc.target/loongarch/stack-check-alloca-4.c: Likewise.
      	* gcc.target/loongarch/stack-check-alloca-5.c: Likewise.
      	* gcc.target/loongarch/stack-check-alloca-6.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-1.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-10.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-2.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-3.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-4.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-5.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-6.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-7.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-8.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-9.c: Likewise.
      	* gcc.target/sparc/setjmp-1.c: Likewise.
      	* gcc.target/x86_64/abi/ms-sysv/ms-sysv.c: Likewise.
      	* gcc.c-torture/compile/20001221-1.c: Don't 'dg-skip-if'
      	for '! alloca'.
      	* gcc.c-torture/compile/20020807-1.c: Likewise.
      	* gcc.c-torture/compile/20050801-2.c: Likewise.
      	* gcc.c-torture/compile/920428-4.c: Likewise.
      	* gcc.c-torture/compile/debugvlafunction-1.c: Likewise.
      	* gcc.c-torture/compile/pr41469.c: Likewise.
      	* gcc.c-torture/execute/920721-2.c: Likewise.
      	* gcc.c-torture/execute/920929-1.c: Likewise.
      	* gcc.c-torture/execute/921017-1.c: Likewise.
      	* gcc.c-torture/execute/941202-1.c: Likewise.
      	* gcc.c-torture/execute/align-nest.c: Likewise.
      	* gcc.c-torture/execute/alloca-1.c: Likewise.
      	* gcc.c-torture/execute/pr22061-4.c: Likewise.
      	* gcc.c-torture/execute/pr36321.c: Likewise.
      	* gcc.dg/torture/pr8081.c: Likewise.
      	* gcc.dg/analyzer/data-model-1.c: Don't
      	'dg-require-effective-target alloca'.  XFAIL relevant
      	'dg-warning's for '! alloca'.
      	* gcc.dg/uninit-38.c: Likewise.
      	* gcc.dg/uninit-pr98578.c: Likewise.
      	* gcc.dg/compat/struct-by-value-22_main.c: Comment on
      	'dg-require-effective-target alloca'.
      	libstdc++-v3/
      	* testsuite/lib/prune.exp (proc libstdc++-dg-prune): Turn
      	'sorry, unimplemented: dynamic stack allocation not supported' into
      	UNSUPPORTED.
      0128fa8b
    • Thomas Schwinge's avatar
      Gracefully handle the case that 'gcc/testsuite/lib/gcc-dg.exp:find-dg-do-what'... · e8e228ac
      Thomas Schwinge authored
      Gracefully handle the case that 'gcc/testsuite/lib/gcc-dg.exp:find-dg-do-what' has not been called (indirectly) from 'dg-test'
      
      No change in behavior intended.
      
      	gcc/testsuite/
      	* lib/gcc-dg.exp (find-dg-do-what): Gracefully handle the case
      	that we've not be called (indirectly) from 'dg-test'.
      	* lib/target-supports.exp (check_effective_target_stack_size)
      	(check_effective_target_alloca): Catch this.
      e8e228ac
    • Thomas Schwinge's avatar
      Refactor duplicated code into 'gcc/testsuite/lib/gcc-dg.exp:find-dg-do-what' · f553b1aa
      Thomas Schwinge authored
      No change in behavior intended.
      
      	gcc/testsuite/
      	* lib/gcc-dg.exp (proc find-dg-do-what): New.
      	* lib/target-supports.exp (check_effective_target_stack_size)
      	(check_effective_target_alloca): Use it.
      f553b1aa
    • Thomas Schwinge's avatar
      BPF, nvptx: Standardize on 'sorry, unimplemented: dynamic stack allocation not supported' · 2abc942f
      Thomas Schwinge authored
      ... instead of BPF: 'error: BPF does not support dynamic stack allocation', and
      nvptx: 'sorry, unimplemented: target cannot support alloca'.
      
      	gcc/
      	* config/bpf/bpf.md (define_expand "allocate_stack"): Emit
      	'sorry, unimplemented: dynamic stack allocation not supported'.
      	* config/nvptx/nvptx.md (define_expand "allocate_stack")
      	[!TARGET_SOFT_STACK && !(TARGET_PTX_7_3 && TARGET_SM52)]: Likewise.
      	gcc/testsuite/
      	* gcc.target/bpf/diag-alloca-1.c: Adjust 'dg-message'.
      	* gcc.target/bpf/diag-alloca-2.c: Likewise.
      	* gcc.target/nvptx/alloca-1-sm_30.c: Likewise.
      	* gcc.target/nvptx/vla-1-sm_30.c: Likewise.
      	* lib/target-supports.exp (proc check_effective_target_alloca):
      	Adjust comment.
      2abc942f
    • shynur's avatar
      libgomp: Add '__attribute__((unused))' to variables used only in 'assert(...)' · e759ff08
      shynur authored
      Without this attribute, the building process will fail if GCC is configured
      with 'CFLAGS=-DNDEBUG'.
      
      libgomp/ChangeLog:
      
      	* oacc-mem.c (acc_unmap_data, goacc_exit_datum_1, find_group_last,
      	goacc_enter_data_internal): Add '__attribute__((unused))'.
      	* target.c (gomp_unmap_vars_internal): Likewise.
      e759ff08
    • Jonathan Wakely's avatar
      libstdc++: Remove misleading comment in __atomic_base<Int> · 44702296
      Jonathan Wakely authored
      No conversion is needed because the type of _M_i is __int_type anyway.
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/atomic_base.h (__atomic_base<_ITp>): Remove
      	misleading comment.
      44702296
    • Jonathan Wakely's avatar
      libstdc++: Remove redundant cast in floating_from_chars.cc · a742b27b
      Jonathan Wakely authored
      In r15-7647-g32457bc25fea80 I added a cast and also changed the type of
      the variable, making the cast redundant. This removes the cast.
      
      libstdc++-v3/ChangeLog:
      
      	* src/c++17/floating_from_chars.cc (__floating_from_chars_hex):
      	Remove redundant cast.
      a742b27b
    • Sandra Loosemore's avatar
      OpenMP: Silence uninitialized variable warning in C++ front end. · c978965b
      Sandra Loosemore authored
      There's no actual problem with the code here, just a false-positive
      warning emitted by some older GCC versions.
      
      gcc/cp/ChangeLog
      	* parser.cc (cp_finish_omp_declare_variant): Initialize
      	append_args_last.
      c978965b
    • Gaius Mulley's avatar
      PR modula2/118978 ICE when attempting to pass an incompatible parameter · a2f60c1f
      Gaius Mulley authored
      
      This bugfix is for a an ICE which occurs if an incompatible parameter
      is passed to a procedure.  In particular if a REAL constant actual
      parameter is passed to INTEGER formal parameter then M2Range is invoked
      to check the type and then M2Range is called to check the value range.
      
      The value range check causes an ICE.  The bug fix introduces range
      dependencies on type checks.  If the type check fails an
      error message is generated and any future range check cancelled.
      These range and type checks are tightly coupled when generating
      parameter quad intermediate code.
      
      gcc/m2/ChangeLog:
      
      	PR modula2/118978
      	* gm2-compiler/M2Check.mod (checkConstMeta): Add check for
      	typed constants.
      	* gm2-compiler/M2Quads.mod (BoolFrame): New field RangeDep.
      	(CheckProcedureParameters): Call PutRangeDep to associate the
      	range dependency with the parameter on the quad stack.
      	Pass ParamCheckId to CheckParameter.
      	(CheckProcTypeAndProcedure): Add ParamCheckId parameter.
      	Pass ParamCheckId to BuildRange.
      	(CheckParameter): New parameter ParamCheckId.
      	Pass ParamCheckId to CheckProcTypeAndProcedure.
      	(CheckParameterOrdinals): Add extra range dep parameter to the
      	call of InitParameterRangeCheck.
      	(ConvertBooleanToVariable): Initialize RangeDep field.
      	(PushBacktok): Ditto.
      	(OperandRangeDep): New procedure.
      	(PutRangeDep): Ditto.
      	* gm2-compiler/M2Range.def (InitTypesParameterCheck): Add new
      	parameter depRangeId.
      	(InitParameterRangeCheck): Add new parameter parentRangeId.
      	(FoldRangeCheck): Add new parameter range.
      	* gm2-compiler/M2Range.mod (InitTypesParameterCheck): Add new
      	parameter depRangeId.
      	(InitParameterRangeCheck): Add new parameter parentRangeId.
      	(FoldRangeCheck): Add new parameter range and rewrite.
      	(FoldRangeCheckLower): New procedure.
      	(Range): New field cancelled.
      	New field dependantid.
      	(PutRangeParam): Initialize dependantid.
      	(PutRangeParamAssign): Ditto.
      	(CheckCancelled): New procedure.
      	(Cancel): Ditto.
      	(IsCancelled): New procedure function.
      	(FoldTypeParam): Add depRangeId parameter.
      	(WriteRangeCheck): Add dependent debugging.
      
      gcc/testsuite/ChangeLog:
      
      	PR modula2/118978
      	* gm2/pim/fail/badparamtype.mod: New test.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      a2f60c1f
    • GCC Administrator's avatar
      Daily bump. · 4de2d2f8
      GCC Administrator authored
      4de2d2f8
  5. Feb 21, 2025
    • H.J. Lu's avatar
      Append a newline in debug_edge · 700f049b
      H.J. Lu authored
      
      Append a newline in debug_edge so that we get
      
      (gdb) call debug_edge (e)
      edge (bb_9, bb_1)
      (gdb)
      
      instead of
      
      (gdb) call debug_edge (e)
      edge (bb_9, bb_1)(gdb)
      
      	* sese.cc (debug_edge): Append a newline.
      
      Signed-off-by: default avatarH.J. Lu <hjl.tools@gmail.com>
      700f049b
    • Richard Biener's avatar
      tree-optimization/118954 - avoid UB on ref created by predcom · ee30e258
      Richard Biener authored
      When predicitive commoning moves an invariant ref it makes sure to
      not build a MEM_REF with a base that is negatively offsetted from
      an object.  But in trying to preserve some transforms it does not
      consider association of a constant offset with the address computation
      in DR_BASE_ADDRESS leading to exactly this problem again.  This is
      arguably a problem in data-ref analysis producing such an out-of-bound
      DR_BASE_ADDRESS, but this looks quite involved to fix, so the
      following avoids the association in one more case.  This fixes the
      testcase while preserving the desired transform in
      gcc.dg/tree-ssa/predcom-1.c.
      
      	PR tree-optimization/118954
      	* tree-predcom.cc (ref_at_iteration): Make sure to not
      	associate the constant offset with DR_BASE_ADDRESS when
      	that is an offsetted pointer.
      
      	* gcc.dg/torture/pr118954.c: New testcase.
      ee30e258
    • Richard Biener's avatar
      Improve g++.dg/torture/pr118521.C · d2720051
      Richard Biener authored
      Alexander pointed out the way to do a dg-bogus in an included header.
      
      	PR tree-optimization/118521
      	* g++.dg/torture/pr118521.C: Use dg-bogus properly.
      d2720051
    • Harald Anlauf's avatar
      Fortran: initialize non-saved pointers with -fcheck=pointer [PR48958] · 7d383a73
      Harald Anlauf authored
      	PR fortran/48958
      
      gcc/fortran/ChangeLog:
      
      	* trans-array.cc (gfc_trans_deferred_array): Initialize the data
      	component of non-saved pointers when -fcheck=pointer is set.
      
      gcc/testsuite/ChangeLog:
      
      	* gfortran.dg/pointer_init_13.f90: New test.
      7d383a73
    • Andre Vehreschild's avatar
      Fortran: Fix build on solaris [PR107635] · 08bdc2ac
      Andre Vehreschild authored
      libgfortran/ChangeLog:
      
      	PR fortran/107635
      	* caf/single.c: Replace alloca with __builtin_alloca.
      08bdc2ac
    • Tobias Burnus's avatar
      Fortran: Improve gfc_array_kind for assumed rank; gfc_tree_array_size on 'tree' · 8293b9e4
      Tobias Burnus authored
      Improve the internal and debug representation of assumed-rank arrays by
      honoring the pointer and allocatable property.
      
      Permit obtaining the array size from only a tree (via the array descriptor)
      besides obtaining it from the gfc_expr's array spec. This will be used
      by a follow up OpenMP patch for mapping derived types with allocatable
      components.
      
      gcc/fortran/ChangeLog:
      
      	* trans-array.cc (gfc_full_array_size): Obtain the rank from
      	the array descriptor for assumed rank.
      	(gfc_tree_array_size): Likewise; permit expr = NULL to operate
      	only the tree.
      	(gfc_conv_descriptor_stride_get): Update for added assumed-rank
      	array types.
      	* trans-openmp.cc (gfc_omp_finish_clause): Likewise.
      	* trans-types.cc (gfc_build_array_type, gfc_get_derived_type,
      	gfc_get_array_descr_info): Likewise.
      	* trans.h (enum gfc_array_kind): Add
      	GFC_ARRAY_ASSUMED_RANK_{ALLOCATABLE,POINTER{,_CONT}}.
      8293b9e4
    • GCC Administrator's avatar
      Daily bump. · fe4811fd
      GCC Administrator authored
      fe4811fd
  6. Feb 20, 2025
    • David Malcolm's avatar
      diagnostics: add comments about global_dc · 4e9ee996
      David Malcolm authored
      
      No functional change intended.
      
      gcc/ChangeLog:
      	* diagnostic-core.h: Add comments making clear that these
      	functions implicitly use global_dc.
      
      Signed-off-by: default avatarDavid Malcolm <dmalcolm@redhat.com>
      4e9ee996
    • David Malcolm's avatar
      sarif-replay: add testcase for empty input file · c5f541e4
      David Malcolm authored
      
      gcc/testsuite/ChangeLog:
      	* sarif-replay.dg/malformed-json/empty.sarif: New test.
      
      Signed-off-by: default avatarDavid Malcolm <dmalcolm@redhat.com>
      c5f541e4
    • David Malcolm's avatar
      sarif-replay: improve error for unescaped braces in messages (§3.11.5) · 5a30a3ab
      David Malcolm authored
      Spotted via https://github.com/llvm/llvm-project/issues/128024
      
      
      
      gcc/ChangeLog:
      	* libsarifreplay.cc
      	(sarif_replayer::make_plain_text_within_result_message): Capture
      	which json::string was used.  When reporting on unescaped "{" or
      	"}" in SARIF message strings, use that string rather than the
      	message object, and refer the user to §3.11.5 ("Messages with
      	placeholders") rather than §3.11.11 ("arguments").  Ideally we'd
      	place the error at the precise character, but that can't be done
      	without reworking json-parsing.cc's lexer::lex_string, which is
      	too invasive for stage 4.
      	(sarif_replayer::get_plain_text_from_mfms): Capture which
      	json::string was used.
      	(sarif_replayer::lookup_plain_text_within_result_message):
      	Likewise.
      
      gcc/testsuite/ChangeLog:
      	* sarif-replay.dg/2.1.0-invalid/3.11.11-malformed-placeholder.sarif:
      	Rename to...
      	* sarif-replay.dg/2.1.0-invalid/3.11.5-unescaped-braces.sarif:
      	...this.  Update expected subsection in error message, and
      	expected underline in quoted JSON.
      
      Signed-off-by: default avatarDavid Malcolm <dmalcolm@redhat.com>
      5a30a3ab
    • Gerald Pfeifer's avatar
      doc: Drop note for Binutils pre 2.24 · 25fa8d6d
      Gerald Pfeifer authored
      Binutils 2.24 was released in 2013, so this is more than 11 years old.
      
      gcc:
      	PR target/69374
      	* doc/install.texi (Specific, aarch64*-*-*): Drop note for
      	Binutils pre 2.24.
      25fa8d6d
    • Richard Sandiford's avatar
      aarch64: Remove old aarch64_expand_sve_vec_cmp_float code · d7ff3142
      Richard Sandiford authored
      While looking at PR118956, I noticed that we had some dead code
      left over after the removal of the vcond patterns.  The can_invert_p
      path is no longer used.
      
      gcc/
      	* config/aarch64/aarch64-protos.h (aarch64_expand_sve_vec_cmp_float):
      	Remove can_invert_p argument and change return type to void.
      	* config/aarch64/aarch64.cc (aarch64_expand_sve_vec_cmp_float):
      	Likewise.
      	* config/aarch64/aarch64-sve.md (vec_cmp<mode><vpred>): Update call
      	accordingly.
      d7ff3142
    • Richard Sandiford's avatar
      testsuite: Fix sve/pcs/args_1.c failures [PR116604] · 2f03b10d
      Richard Sandiford authored
      This test has been failing since r15-1619-g3b9b8d6cfdf593, which made
      IRA prefer a call-clobbered register over a call-preserved register
      for mem1 (the second load).  In this particular case, that just
      forces the variable p3 to be allocated to a call-preserved register
      instead, leading to an extra predicate move from p3 to that register.
      
      However, it was really pot luck that this worked before.  Each argument
      is used exactly once, so there isn't an obvious colouring order.
      And mem0 and mem1 are passed by indirect reference, so they are not
      REG_EQUIV to a stack slot in the way that some memory arguments are.
      
      IIRC, the test was the result of some experimentation, and so I think
      the best fix is to rework it to try to make it less sensitive to RA
      decisions.  This patch does that by enabling scheduling for the
      function and using both memory arguments in the same instruction.
      This gets rid of the distracting prologue and epilogue code and
      restricts the test to the PCS parts.
      
      gcc/testsuite/
      	PR testsuite/116604
      	* gcc.target/aarch64/sve/pcs/args_1.c (callee_pred): Enable scheduling
      	and use both memory arguments in the same instruction.  Expect no
      	prologue and epilogue code.
      2f03b10d
    • Richard Sandiford's avatar
      testsuite: Fix sve/var_stride_*.c failures · 9e0b94db
      Richard Sandiford authored
      gcc.target/aarch64/sve/var_stride_2.c started failing after
      r15-268-g9dbff9c05520, but the change was an improvement:
      
      @@ -36,13 +36,11 @@
       	b.any	.L9
       	ret
       .L17:
      -	ubfiz	x5, x3, 10, 16
      -	ubfiz	x4, x2, 10, 16
      -	add	x5, x1, x5
      -	add	x4, x0, x4
      -	cmp	x0, x5
      -	ccmp	x1, x4, 2, ls
       	uxtw	x4, w2
      +	add	x6, x1, x3, lsl 10
      +	cmp	x0, x6
      +	add	x5, x0, x4, lsl 10
      +	ccmp	x1, x5, 2, ls
       	ccmp	w2, 0, 4, hi
       	beq	.L3
       	cntb	x7
      
      This patch therefore changes the test to expect the new output
      for var_stride_2.c.
      
      The changes for var_stride_4.c were a wash, with both versions
      having 18(!) arithmetic instructions before the alias check branch.
      Both versions sign-extend the n and m arguments as part of this
      sequence; the question is whether they do it first or later.
      
      This patch therefore changes the test to accept either the old
      or the new code for var_stride_4.c.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/var_stride_2.c: Expect ADD+LSL.
      	* gcc.target/aarch64/sve/var_stride_4.c: Accept LSL or SBFIZ.
      9e0b94db
    • Richard Biener's avatar
      tree-optimization/118521 - bogus diagnostic from unreachable code · a2755339
      Richard Biener authored
      When SCCP does final value replacement we end up with unfolded IL like
      
      __result_274 = _150 + 1;
      ...
      __new_finish_106 = __result_274 + 3;  <-- from SCCP
      _115 = _150 + 4;
      if (__new_finish_106 != _115)
      
      this does only get rectified by the next full folding which happens
      in forwprop4 which is after the strlen pass emitting the unwanted
      diagnostic.  The following mitigates this case in a similar way as
      r15-7472 did for PR118817 - by ensuring we have the IL folded.
      This is done by simply folding all immediate uses of the former
      PHI def that SCCP replaces.  All other more general approaches have
      too much fallout at this point.
      
      	PR tree-optimization/118521
      	* tree-scalar-evolution.cc (final_value_replacement_loop):
      	Fold uses of the replaced PHI def.
      
      	* g++.dg/torture/pr118521.C: New testcase.
      a2755339
Loading