Skip to content
Snippets Groups Projects
  1. Feb 24, 2025
    • 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
  2. Feb 23, 2025
  3. 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
  4. 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
  5. 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
    • Filip Kastl's avatar
      invoke.texi: Fix typo in the file-cache-lines param · a42374b6
      Filip Kastl authored
      
      file-cache-lines param was documented as file-cache-files.  This fixes
      the typo.
      
      gcc/ChangeLog:
      
      	* doc/invoke.texi: Fix typo file-cache-files ->
      	file-cache-lines.
      
      Signed-off-by: default avatarFilip Kastl <fkastl@suse.cz>
      a42374b6
    • Jonathan Wakely's avatar
      libstdc++: Workaround Clang bug with __array_rank built-in [PR118559] · c0e865f7
      Jonathan Wakely authored
      We started using the __array_rank built-in with r15-1252-g6f0dfa6f1acdf7
      but that built-in is buggy in versions of Clang up to and including 19.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/118559
      	* include/std/type_traits (rank, rank_v): Do not use
      	__array_rank for Clang 19 and older.
      c0e865f7
    • Jonathan Wakely's avatar
      libstdc++: Add parentheses around _GLIBCXX_HAS_BUILTIN definition · 57f65c5c
      Jonathan Wakely authored
      This allows _GLIBCXX_HAS_BUILTIN (or _GLIBCXX_USE_BUILTIN_TRAIT) to be
      used as part of a larger logical expression.
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/c++config (_GLIBCXX_HAS_BUILTIN): Add parentheses.
      57f65c5c
    • Jonathan Wakely's avatar
      libstdc++: Use new type-generic built-ins in <bit> [PR118855] · e8ad697a
      Jonathan Wakely authored
      This makes several functions in <bit> faster to compile, with fewer
      expressions to parse and fewer instantiations of __numeric_traits
      required.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/118855
      	* include/std/bit (__count_lzero, __count_rzero, __popcount):
      	Use type-generic built-ins when available.
      e8ad697a
    • Jonathan Wakely's avatar
      libstdc++: Fix invalid signed arguments to <bit> functions · 32457bc2
      Jonathan Wakely authored
      These should have been unsigned, but the static assertions are only in
      the public std::bit_ceil and std::bit_width functions, not the internal
      __bit_ceil and __bit_width ones.
      
      libstdc++-v3/ChangeLog:
      
      	* include/experimental/bits/simd.h (__find_next_valid_abi): Cast
      	__bit_ceil argument to unsigned.
      	* src/c++17/floating_from_chars.cc (__floating_from_chars_hex):
      	Cast __bit_ceil argument to unsigned.
      	* src/c++17/memory_resource.cc (big_block): Cast __bit_width
      	argument to unsigned.
      32457bc2
    • Jonathan Wakely's avatar
      libstdc++: Remove workaround for reserved init_priority warnings · 29eb6f8f
      Jonathan Wakely authored
      Since r15-7511-g4e7f74225116e7 we can disable the warnings for using a
      reserved priority using a diagnostic pragma. That means we no longer
      need to put globals using that attribute into separate files that get
      included.
      
      This replaces the two uses of such separate files by moving the variable
      definition into the source file and adding the diagnostic pragma.
      
      libstdc++-v3/ChangeLog:
      
      	* src/c++17/memory_resource.cc (default_res): Define here
      	instead of including default_resource.h.
      	* src/c++98/globals_io.cc (__ioinit): Define here instead of
      	including ios_base_init.h.
      	* src/c++17/default_resource.h: Removed.
      	* src/c++98/ios_base_init.h: Removed.
      29eb6f8f
Loading