aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2024-09-26libstdc++: Fix freebsd/dragonfly build [PR116859]Jakub Jelinek2-3/+15
As reported in the PR, the system headers libstdc++ changes result in -Werror=expansion-to-defined errors on FreeBSD and supposedly on DragonFly too. The following patch fixes those by performing the preprocessor test right away, rather than using defined in the macro definitions. I think neither __ISO_C_VISIBLE nor __LONG_LONG_SUPPORTED should normally change during compilation. 2024-09-26 Jakub Jelinek <jakub@redhat.com> PR libstdc++/116859 * config/os/bsd/freebsd/os_defines.h (_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC, _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC): Avoid -Wexpansion-to-defined warnings. * config/os/bsd/dragonfly/os_defines.h (_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC): Likewise.
2024-09-26libstdc++: Preserve signbit of nan when converting float to double [PR113578]Jonathan Wakely2-6/+51
LWG 117 specifies that inserting a float into an ostream should cast it to double, because there's no std::num_put::put member that takes a float. However, on RISC-V converting a NaN float to double loses the sign, which means that negative NaN floats are printed as positive. This has been reported as LWG 4101 and there is good support for fixing the standard to preserve the sign bit when printing negative NaN values. This change uses copysign((double)f, (double)std::bit_cast<int>(f)) to get a double that preserves the sign. The bit_cast gives us an integer with the same signbit, and casting that to the target type preserves the signbit. We don't care about the value, as copysign only uses the signbit. The inserters for extended floating-point types need the same treatment, so add a new _S_cast_flt helper to do the signbit-preserving conversion generically. So far only RISC-V has been confirmed to need this treatment, but we might need to extend it to other targets later. libstdc++-v3/ChangeLog: PR libstdc++/113578 * include/std/ostream (_S_cast_flt): New static member function to restore signbit after casting to double or long double. (operator<<(float), operator<<(_Float16), operator<<(_Float32)) (operator<<(_Float64), operator(_Float128)) (operator<<(__bfloat16_t)): Use _S_cast_flt. testsuite/27_io/basic_ostream/inserters_arithmetic/lwg4101.cc: New test. Co-authored-by: Andrew Waterman <andrew@sifive.com>
2024-09-26libstdc++: Fix comments in <sstream> tests that mention basic_filebufJonathan Wakely9-25/+17
libstdc++-v3/ChangeLog: * testsuite/27_io/basic_istringstream/cons/2020.cc: Fix comment referring to basic_filebuf. * testsuite/27_io/basic_istringstream/requirements/base_classes.cc: Likewise. * testsuite/27_io/basic_ostringstream/cons/2020.cc: Likewise. * testsuite/27_io/basic_ostringstream/requirements/base_classes.cc: Likewise. * testsuite/27_io/basic_stringbuf/cons/2020.cc: Likewise. * testsuite/27_io/basic_stringbuf/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/27_io/basic_stringbuf/requirements/explicit_instantiation/4.cc: Likewise. * testsuite/27_io/basic_stringstream/cons/2020.cc: Likewise. * testsuite/27_io/basic_stringstream/requirements/base_classes.cc: Likewise.
2024-09-26libstdc++: Add [[nodiscard]] to iostream membersJonathan Wakely7-4/+51
These are all pure functions and MSVC also marks all of these as nodiscard except for std::basic_ios::tie() const, but that's been confirmed as an accidental omission. libstdc++-v3/ChangeLog: * include/bits/basic_ios.h (basic_ios::operator bool()): Add [[nodiscard]] attribute. (basic_ios::operator!(), basic_ios::rdstate()) (basic_ios::good(), basic_ios::eof(), basic_ios::fail()) (basic_ios::bad(), basic_ios::exceptions(), basic_ios::tie()) (basic_ios::rdbuf(), basic_ios::fill()): Likewise. * include/bits/ios_base.h (ios_base::flags()): Likewise. (ios_base::precision(), ios_base::width(), ios_base::getloc()): Likewise. * include/std/fstream (basic_filebuf::is_open) (basic_ifstream::rdbuf(), basic_ifstream::is_open) (basic_ofstream::rdbuf(), basic_ofstream::is_open) (basic_fstream::rdbuf(), basic_fstream::is_open): Likewise. * include/std/spanstream (basic_spanbuf::span()) (basic_ispanstream::span(), basic_ispanstream::rdbuf()) (basic_ospanstream::span(), basic_ospanstream::rdbuf()) (basic_spanstream::span(), basic_spanstream::rdbuf()): Likewise. * include/std/sstream (basic_stringbuf::str()) (basic_istringstream::rdbuf(), basic_istringstream::str()) (basic_ostringstream::rdbuf(), basic_ostringstream::str()) (basic_stringstream::rdbuf(), basic_stringstream::str()): Likewise. * testsuite/27_io/basic_istream/extractors_arithmetic/char/01.cc: Suppress -Wunused-result warnings. * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/01.cc: Likewise.
2024-09-26libgomp.texi: Fix deprecation note for omp_{get,set}_nested + OMP_NESTEDTobias Burnus1-3/+3
libgomp/ChangeLog: * libgomp.texi (omp_get_nested,omp_set_nested, OMP_NESTED): Fix note about deprecation - correct is 5.0 not 5.2.
2024-09-26testsuite: XFAIL gfortran.dg/initialization_25.f90 properlySam James1-2/+2
The test was disabled/XFAIL'd informally in r0-100012-gcdc6637d7c78ec, but r15-3890-g34bf6aa41ba539 didn't realize this, causing a FAIL. Fix that by marking it as XFAIL per the original intent. gcc/testsuite/ChangeLog: PR fortran/35779 PR fortran/116858 * gfortran.dg/initialization_25.f90: Mark as XFAIL.
2024-09-26doc: Remove index reference to removed documentation in fortran manualMikael Morin1-1/+0
Fortran option -M used to be an alias for -J. After some deprecation time, it was reused for another purpose at revision r0-100725-gd8ddea4044ee8212d5fe305e8e2a547700cd7b8f. That revision removed the documentation parts of -J mentioning -M, but left a reference to -M in the index. This change removes the remaining reference. gcc/fortran/ChangeLog: * invoke.texi (-M): Remove index reference to removed documentation.
2024-09-26Add virtual destructor to AbstractExprOwen Avery1-0/+2
gcc/rust/ChangeLog: * checks/errors/borrowck/rust-bir.h (class AbstractExpr): Add virtual destructor. Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
2024-09-26tree-optimization/114855 - speed up dom_oracle::register_transitivesRichard Biener3-18/+44
dom_oracle::register_transitives contains an unbound dominator walk which for the testcase in PR114855 dominates the profile. The following fixes the unbound work done by assigning a constant work budget to the loop, bounding the number of dominators visited but also the number of relations processed. This gets both dom_oracle::register_transitives and get_immediate_dominator off the profile. I'll note that we're still doing an unbound dominator walk via equiv_set in find_equiv_dom at the start of the function and when we register a relation that also looks up the same way. At least for the testcase at hand this isn't an issue. I've also amended the guard to register_transitives with the per-basic-block limit for the number of relations registered not being exhausted. PR tree-optimization/114855 * params.opt (--param transitive-relations-work-bound): New. * doc/invoke.texi (--param transitive-relations-work-bound): Document. * value-relation.cc (dom_oracle::register_transitives): Assing an overall work budget, bounding the dominator walk and the number of relations processed. (dom_oracle::record): Only register_transitives when the number of already registered relations does not yet exceed the per-BB limit.
2024-09-26Fortran/OpenMP: Middle-end support for mapping of DT with allocatable componentsTobias Burnus5-26/+265
gcc/ChangeLog: * langhooks-def.h (lhd_omp_deep_mapping_p, lhd_omp_deep_mapping_cnt, lhd_omp_deep_mapping): New. (LANG_HOOKS_OMP_DEEP_MAPPING_P, LANG_HOOKS_OMP_DEEP_MAPPING_CNT, LANG_HOOKS_OMP_DEEP_MAPPING): Define. (LANG_HOOKS_DECLS): Use it. * langhooks.cc (lhd_omp_deep_mapping_p, lhd_omp_deep_mapping_cnt, lhd_omp_deep_mapping): New stubs. * langhooks.h (struct lang_hooks_for_decls): Add new hooks * omp-expand.cc (expand_omp_target): Handle dynamic-size addr/sizes/kinds arrays. * omp-low.cc (build_sender_ref, fixup_child_record_type, scan_sharing_clauses, lower_omp_target): Update to handle new hooks and dynamic-size addr/sizes/kinds arrays.
2024-09-26libstdc++: Suppress an attribute suggestion warning [PR116853].Iain Sandoe1-0/+3
This warning is triggering during the build and breaking bootstrap on at least two targets. The warning appears valid, but the final fix for it is not yet clear. In the meantime, to restore bootstrap, the following patch ignores the warning in the relevant code section. PR libstdc++/116853 libstdc++-v3/ChangeLog: * include/bits/basic_string.h: Ignore suggest-attribute=format warning when using posix vsnprintf in to_string() implementations. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
2024-09-26libstdc++: Fix std::basic_stracktrace to not assume allocators throw ↵Jonathan Wakely1-2/+2
std::bad_alloc The standard allows allocators to throw any kind of exception, not only something that can be caught as std::bad_alloc. std::basic_stracktrace was assuming std::bad_alloc. libstdc++-v3/ChangeLog: * include/std/stacktrace (basic_stacktrace::_Impl::_M_allocate): Do not assume allocators only throw std::bad_alloc.
2024-09-26libstdc++: Remove noexcept-specifier from MCF __cxa_guard_acquire [PR116857]Jonathan Wakely1-10/+10
This function definition should not be marked as non-throwing, because the declaration in <cxxabi.h> is potentially throwing. Also fix whitespace. libstdc++-v3/ChangeLog: PR libstdc++/116857 * libsupc++/guard.cc (__cxa_guard_acquire): Remove _GLIBCXX_NOTHROW to match declaration in <cxxabi.h>.
2024-09-26pretty-print: Fix up allocate_objectJakub Jelinek1-1/+1
On Thu, Aug 29, 2024 at 06:58:12PM -0400, David Malcolm wrote: > The following patch rewrites the internals of pp_format. > The tokens and token lists are allocated on the chunk_obstack, and so > there's no additional heap activity required, with the memory reclaimed > when the chunk_obstack is freed after phase 3 of formatting. > +static void * > +allocate_object (size_t sz, obstack &s) > +{ > + /* We must not be half-way through an object. */ > + gcc_assert (obstack_base (&s) == obstack_next_free (&s)); > + > + obstack_grow (&s, obstack_base (&s), sz); > + void *buf = obstack_finish (&s); > + return buf; > } I think this is wrong. I hoped it would be the reason of the unexpected libstdc++ warnings on certain architectures after seeing ==4027220== Source and destination overlap in memcpy(0x4627154, 0x4627154, 12) ==4027220== at 0x404B93E: memcpy (vg_replace_strmem.c:1123) ==4027220== by 0xAAD5618: allocate_object(unsigned int, obstack&) (pretty-print.cc:1183) ==4027220== by 0xAAD8C0E: operator new (pretty-print.cc:1210) ==4027220== by 0xAAD8C0E: make (pretty-print-format-impl.h:305) ==4027220== by 0xAAD8C0E: format_phase_1 (pretty-print.cc:1659) ==4027220== by 0xAAD8C0E: pretty_printer::format(text_info&) (pretty-print.cc:1618) ==4027220== by 0xAAA840E: pp_format (pretty-print.h:583) ==4027220== by 0xAAA840E: diagnostic_context::report_diagnostic(diagnostic_info*) (diagnostic.cc:1260) ==4027220== by 0xAAA8703: diagnostic_context::diagnostic_impl(rich_location*, diagnostic_metadata const*, diagnostic_option_id, char const*, char**, diagnostic_t) (diagnostic.cc:1404) ==4027220== by 0xAAB8682: warning(diagnostic_option_id, char const*, ...) (diagnostic-global-context.cc:166) ==4027220== by 0x97725F5: warn_deprecated_use(tree_node*, tree_node*) (tree.cc:12485) ==4027220== by 0x8B6694B: mark_used(tree_node*, int) (decl2.cc:6121) ==4027220== by 0x8C9E25E: tsubst_expr(tree_node*, tree_node*, int, tree_node*) [clone .part.0] (pt.cc:21626) ==4027220== by 0x8C9E5E6: tsubst_expr(tree_node*, tree_node*, int, tree_node*) [clone .part.0] (pt.cc:20935) ==4027220== by 0x8C9E1D7: tsubst_expr(tree_node*, tree_node*, int, tree_node*) [clone .part.0] (pt.cc:20424) ==4027220== by 0x8C9DF2E: tsubst_expr(tree_node*, tree_node*, int, tree_node*) [clone .part.0] (pt.cc:20496) ==4027220== etc. valgrind warnings, unfortunately it is not, but still I think this is a bug. If the obstack has enough space in it, i.e. if obstack_room (&s) >= sz, then obstack_grow from obstack_base will copy uninitialized bytes through memcpy (obstack_base (&s), obstack_base (&s), sz); (which pedantically isn't valid due to the overlap, and so the reason why valgrind complains, but in reality I think most implementations can handle it fine, after all, we also use it for structure assignments which could have full or no overlap but never partial). If obstack_room (&s) < sz, then obstack_grow will first _obstack_newchunk (&s, sz); which will allocate new memory and copy the existing data of the object (but the above assertion guartantees it will copy 0 bytes) and then the memcpy copies sz bytes from the old base to the new (if unlucky, that could crash as there could be end of page and unmapped next page in between). I think we should use obstack_blank instead of obstack_grow, which does everything obstack_grow does, except for the memcpy of the uninitialized data. 2024-09-25 Jakub Jelinek <jakub@redhat.com> * pretty-print.cc (allocate_object): Use obstack_blank rather than obstack_grow.
2024-09-26testsuite: fix hyphen typosSam James2-3/+3
gcc/testsuite/ChangeLog: * g++.dg/modules/reparent-1_c.C: Fix whitespace around '-' in dg directive. * gfortran.dg/initialization_25.f90: Ditto.
2024-09-26testsuite: fix comment-only directive typosSam James4-4/+4
Doing this to avoid FPs from grepping but also to avoid the potential for people learning bad habits. gcc/testsuite/ChangeLog: * gfortran.dg/coarray/caf.exp: Fix 'dg-do-run' typo. * lib/gfortran-dg.exp: Ditto. * lib/gm2-dg.exp: Ditto. * lib/go-dg.exp: Ditto.
2024-09-26doc: Remove MinGW note on binutils 2.16Gerald Pfeifer1-4/+0
Binutils 2.16 is 13 years old; no need to specifically refer to it as a requirement. gcc: PR target/69374 * doc/install.texi (Specific) <*-*-mingw32>: Remove note regarding binutils 2.16.
2024-09-26[match.pd] Handle abs pattern with convertKugan Vivekanandarajah3-21/+61
gcc/ChangeLog: * match.pd: Extend A CMP 0 ? A : -A into (type)A CMP 0 ? A : -A. Extend A CMP 0 ? A : -A into (type) A CMP 0 ? A : -A. gcc/testsuite/ChangeLog: * g++.dg/absvect.C: New test. * gcc.dg/tree-ssa/absfloat16.c: New test. Signed-off-by: Kugan Vivekanandarajah <kvivekananda@nvidia.com>
2024-09-26x86: Extend AVX512 Vectorization for Popcount in Various ModesLevy Hsu2-0/+73
This patch enables vectorization of the popcount operation for V2QI, V4QI, V8QI, V2HI, V4HI, and V2SI modes. gcc/ChangeLog: * config/i386/mmx.md: (VQI_16_32_64): New mode iterator for 8-byte, 4-byte, and 2-byte QImode. (popcount<mode>2): New pattern for popcount of V2QI/V4QI/V8QI mode. (popcount<mode>2): New pattern for popcount of V2HI/V4HI mode. (popcountv2si2): New pattern for popcount of V2SI mode. gcc/testsuite/ChangeLog: * gcc.target/i386/part-vect-popcount-1.c: New test.
2024-09-26Define VECTOR_STORE_FLAG_VALUEliuhongt2-1/+30
gcc/ChangeLog: * config/i386/i386.h (VECTOR_STORE_FLAG_VALUE): New macro. gcc/testsuite/ChangeLog: * gcc.dg/rtl/x86_64/vector_eq.c: New test.
2024-09-26testsuite: Fix testcase g++.dg/modules/indirect-1_b.C [PR116846]Nathaniel Shead1-5/+2
r15-3878 exposed a mistake in the testcase, probably from an older version of the dumping logic. Apart from the slightly different syntax for the dump line, also check for importing the type_decl rather than the const_decl (we need the type anyway and importing the type also brings along the enumerators so it would be unnecessary to seed an import for them as well). PR c++/116846 gcc/testsuite/ChangeLog: * g++.dg/modules/indirect-1_b.C: Fix testcase. Signed-off-by: Nathaniel Shead <nathanieloshead@gmail.com>
2024-09-26RISC-V: Add testcases for form 3 of signed vector SAT_ADDPan Li9-0/+126
Form 3: #define DEF_VEC_SAT_S_ADD_FMT_3(T, UT, MIN, MAX) \ void __attribute__((noinline)) \ vec_sat_s_add_##T##_fmt_3 (T *out, T *op_1, T *op_2, unsigned limit) \ { \ unsigned i; \ for (i = 0; i < limit; i++) \ { \ T x = op_1[i]; \ T y = op_2[i]; \ T sum; \ bool overflow = __builtin_add_overflow (x, y, &sum); \ out[i] = overflow ? x < 0 ? MIN : MAX : sum; \ } \ } DEF_VEC_SAT_S_ADD_FMT_3 (int8_t, uint8_t, INT8_MIN, INT8_MAX) The below test are passed for this patch. * The rv64gcv fully regression test. It is test only patch and obvious up to a point, will commit it directly if no comments in next 48H. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/vec_sat_arith.h: Add test helper macros. * gcc.target/riscv/rvv/autovec/binop/vec_sat_s_add-10.c: New test. * gcc.target/riscv/rvv/autovec/binop/vec_sat_s_add-11.c: New test. * gcc.target/riscv/rvv/autovec/binop/vec_sat_s_add-12.c: New test. * gcc.target/riscv/rvv/autovec/binop/vec_sat_s_add-9.c: New test. * gcc.target/riscv/rvv/autovec/binop/vec_sat_s_add-run-10.c: New test. * gcc.target/riscv/rvv/autovec/binop/vec_sat_s_add-run-11.c: New test. * gcc.target/riscv/rvv/autovec/binop/vec_sat_s_add-run-12.c: New test. * gcc.target/riscv/rvv/autovec/binop/vec_sat_s_add-run-9.c: New test. Signed-off-by: Pan Li <pan2.li@intel.com>
2024-09-26Match: Support form 3 for vector signed integer .SAT_ADDPan Li1-1/+3
This patch would like to support the form 3 of the vector signed integer .SAT_ADD. Aka below example: Form 3: #define DEF_VEC_SAT_S_ADD_FMT_3(T, UT, MIN, MAX) \ void __attribute__((noinline)) \ vec_sat_s_add_##T##_fmt_3 (T *out, T *op_1, T *op_2, unsigned limit) \ { \ unsigned i; \ for (i = 0; i < limit; i++) \ { \ T x = op_1[i]; \ T y = op_2[i]; \ T sum; \ bool overflow = __builtin_add_overflow (x, y, &sum); \ out[i] = overflow ? x < 0 ? MIN : MAX : sum; \ } \ } DEF_VEC_SAT_S_ADD_FMT_3(int8_t, uint8_t, INT8_MIN, INT8_MAX) Before this patch: 40 │ # ivtmp.7_34 = PHI <0(3), ivtmp.7_30(7)> 41 │ _26 = op_1_12(D) + ivtmp.7_34; 42 │ x_29 = MEM[(int8_t *)_26]; 43 │ _1 = op_2_14(D) + ivtmp.7_34; 44 │ y_24 = MEM[(int8_t *)_1]; 45 │ _9 = .ADD_OVERFLOW (y_24, x_29); 46 │ _7 = IMAGPART_EXPR <_9>; 47 │ if (_7 != 0) 48 │ goto <bb 6>; [50.00%] 49 │ else 50 │ goto <bb 5>; [50.00%] 51 │ ;; succ: 6 52 │ ;; 5 53 │ 54 │ ;; basic block 5, loop depth 1 55 │ ;; pred: 4 56 │ _42 = REALPART_EXPR <_9>; 57 │ _2 = out_17(D) + ivtmp.7_34; 58 │ MEM[(int8_t *)_2] = _42; 59 │ ivtmp.7_27 = ivtmp.7_34 + 1; 60 │ if (_13 != ivtmp.7_27) 61 │ goto <bb 7>; [89.00%] 62 │ else 63 │ goto <bb 8>; [11.00%] 64 │ ;; succ: 7 65 │ ;; 8 66 │ 67 │ ;; basic block 6, loop depth 1 68 │ ;; pred: 4 69 │ _38 = x_29 < 0; 70 │ _39 = (signed char) _38; 71 │ _40 = -_39; 72 │ _41 = _40 ^ 127; 73 │ _33 = out_17(D) + ivtmp.7_34; 74 │ MEM[(int8_t *)_33] = _41; 75 │ ivtmp.7_25 = ivtmp.7_34 + 1; 76 │ if (_13 != ivtmp.7_25) After this patch: 77 │ _94 = .SELECT_VL (ivtmp_92, POLY_INT_CST [16, 16]); 78 │ vect_x_13.9_81 = .MASK_LEN_LOAD (vectp_op_1.7_79, 8B, { -1, ... }, _94, 0); 79 │ vect_y_15.12_85 = .MASK_LEN_LOAD (vectp_op_2.10_83, 8B, { -1, ... }, _94, 0); 80 │ vect_patt_49.13_86 = .SAT_ADD (vect_x_13.9_81, vect_y_15.12_85); 81 │ .MASK_LEN_STORE (vectp_out.14_88, 8B, { -1, ... }, _94, 0, vect_patt_49.13_86); 82 │ vectp_op_1.7_80 = vectp_op_1.7_79 + _94; 83 │ vectp_op_2.10_84 = vectp_op_2.10_83 + _94; 84 │ vectp_out.14_89 = vectp_out.14_88 + _94; 85 │ ivtmp_93 = ivtmp_92 - _94; The below test suites are passed for this patch. * The rv64gcv fully regression test. * The x86 bootstrap test. * The x86 fully regression test. gcc/ChangeLog: * match.pd: Add optional nop_convert for signed SAT_ADD case 4. Signed-off-by: Pan Li <pan2.li@intel.com>
2024-09-26Daily bump.GCC Administrator14-1/+762
2024-09-26gfortran testsuite: Remove unit-files in files having open-statements, PR116701Hans-Peter Nilsson3-0/+24
PR testsuite/116701 shows that left-behind files from unnamed gfortran open statements (named unit.N, where N = unit number) can interfere with the result of a subsequent run. While that's unlikely to happen for a "real" fortran target or a test with a deleting close-statement, test-cases should not rely on previous test-cases passing and not execute along different execution paths depending on earlier runs, even if the difference is benevolent. Most but not all fortran test-cases go through gfortran-dg-runtest (gfortran.dg) or fortran-torture-execute (gfortran.fortran-torture). However, the exceptions, with more complex framework and call-chains, either don't run or don't have open-statements, so a more complex solution doesn't seem worthwhile. If test-cases with open-statements are added later to those parts of the test-suite, calls to fortran-delete-unit-files at the right spot may be added or worst case, "manual" cleanup-calls added, like: ! { dg-final { remote_file target delete "fort.10" } } Put the new proc in fortran-modules.exp since that's where other common fortran-testsuite dejagnu-library functions are located. PR testsuite/116701 * lib/fortran-modules.exp (fortran-delete-unit-files): New proc. * lib/gfortran-dg.exp (gfortran-dg-runtest): Call fortran-delete-unit-files after executing test. * lib/fortran-torture.exp (fortran-torture-execute): Ditto.
2024-09-25testsuite: XFAIL g++.dg/modules/indirect-1_b.CSam James1-4/+5
Mark the newly typo-fixed dg-final bits as XFAIL until investigated. gcc/testsuite/ChangeLog: PR c++/116846 * g++.dg/modules/indirect-1_b.C: Add XFAIL.
2024-09-25testsuite: fix dejagnu typos with underscoresSam James4-15/+15
Fix typos in dejagnu 'dg-*' directives with erroneous underscores like 'dg_'. gcc/testsuite/ChangeLog: PR debug/30161 PR c++/91826 PR c++/116846 * g++.dg/debug/dwarf2/template-func-params-7.C: Fix errant underscore. Cleanup whitespace in directives too. * g++.dg/lookup/pr91826.C: Fix errant underscore. * g++.dg/modules/indirect-1_b.C: Ditto. * gcc.target/powerpc/vsx-builtin-msum.c: Ditto.
2024-09-25doc: Remove @code wrapping of fortran option names [PR116801]Mikael Morin9-226/+556
The documentation of gfortran options uses @code wrappings for arguments to @opindex. This is superfluous, as 'op' index is a texinfo 'code' index, that is it already implicitly formats its arguments as if in a @code block. The superfluous wrapping has the effect of creating a nested <code class="..."> tag inside the regular automatic <code> tag, in the option index HTML page, preventing the recognition of the corresponding option by the option URL generation script. This change removes those superfluous @code wrappings. Additionally, variables appearing as separate argument in index are removed, permitting a few more URL recognition. Finally, the URL files are regenerated with the new URLs recognized on the updated HTML files. By the way, a spurious 'option' is removed from the label of the std= option in the index, without any effect on URL recognition. PR other/116801 gcc/fortran/ChangeLog: * invoke.texi: Remove @code wrapping in arguments to @opindex. (std=): Remove spurious 'option' in index. (idirafter, imultilib, iprefix, isysroot, iquote, isystem, fintrinsic-modules-path): Remove variable from index. * lang.opt.urls: Regenerate. gcc/ada/ChangeLog: * gcc-interface/lang.opt.urls: Regenerate. gcc/c-family/ChangeLog: * c.opt.urls: Regenerate. gcc/ChangeLog: * common.opt.urls: Regenerate. gcc/d/ChangeLog: * lang.opt.urls: Regenerate. gcc/go/ChangeLog: * lang.opt.urls: Regenerate. gcc/m2/ChangeLog: * lang.opt.urls: Regenerate. gcc/rust/ChangeLog: * lang.opt.urls: Regenerate.
2024-09-25i386: Add GENERIC and GIMPLE folders of __builtin_ia32_{min,max}* [PR116738]Jakub Jelinek3-0/+266
The following patch adds GENERIC and GIMPLE folders for various x86 min/max builtins. As discussed, these builtins have effectively x < y ? x : y (or x > y ? x : y) behavior. The GENERIC folding is done if all the (relevant) arguments are constants (such as VECTOR_CST for vectors) and is done because the GIMPLE folding can't easily handle masking, rounding and the ss/sd cases (in a way that it would be pattern recognized back to the corresponding instructions). The GIMPLE folding is also done just for TARGET_SSE4 or later when optimizing, otherwise it is apparently not matched back. 2024-09-25 Jakub Jelinek <jakub@redhat.com> PR target/116738 * config/i386/i386.cc (ix86_fold_builtin): Handle IX86_BUILTIN_M{IN,AX}{S,P}{S,H,D}*. (ix86_gimple_fold_builtin): Handle IX86_BUILTIN_M{IN,AX}P{S,H,D}*. * gcc.target/i386/avx512f-pr116738-1.c: New test. * gcc.target/i386/avx512f-pr116738-2.c: New test.
2024-09-26x86: Don't use address override with segment regsiterH.J. Lu2-1/+56
Address override only applies to the (reg32) part in the thread address fs:(reg32). Don't rewrite thread address like (set (reg:CCZ 17 flags) (compare:CCZ (reg:SI 98 [ __gmpfr_emax.0_1 ]) (mem/c:SI (plus:SI (plus:SI (unspec:SI [ (const_int 0 [0]) ] UNSPEC_TP) (reg:SI 107)) (const:SI (unspec:SI [ (symbol_ref:SI ("previous_emax") [flags 0x1a] <var_decl 0x7fffe9a11cf0 previous_emax>) ] UNSPEC_DTPOFF))) [1 previous_emax+0 S4 A32]))) if address override is used to avoid the invalid memory operand like cmpl %fs:previous_emax@dtpoff(%eax), %r12d gcc/ PR target/116839 * config/i386/i386.cc (ix86_rewrite_tls_address_1): Make it static. Return if TLS address is thread register plus an integer register. gcc/testsuite/ PR target/116839 * gcc.target/i386/pr116839.c: New file. Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
2024-09-25ltmain.sh: allow more flags at link-timeSam James1-12/+34
libtool defaults to filtering flags passed at link-time. This brings the filtering in GCC's 'fork' of libtool into sync with upstream libtool commit 22a7e547e9857fc94fe5bc7c921d9a4b49c09f8e. In particular, this now allows some harmless diagnostic flags (especially useful for things like -Werror=odr), more optimization flags, and some Clang-specific options. GCC's -flto documentation mentions: > To use the link-time optimizer, -flto and optimization options should be > specified at compile time and during the final link. It is recommended > that you compile all the files participating in the same link with the > same options and also specify those options at link time. This allows compliance with that. * ltmain.sh (func_mode_link): Allow various flags through filter.
2024-09-25libstdc++: testsuite: fix dg-bogus directive syntaxSam James3-3/+3
These dg-bogus directives were bogus as they missed a closing brace. ``` +PASS: 23_containers/array/capacity/empty.cc -std=gnu++17 (test for bogus messages, line 54) PASS: 23_containers/array/capacity/empty.cc -std=gnu++17 (test for excess errors) PASS: 23_containers/array/capacity/empty.cc -std=gnu++17 execution test +PASS: 23_containers/array/capacity/max_size.cc -std=gnu++17 (test for bogus messages, line 54) PASS: 23_containers/array/capacity/max_size.cc -std=gnu++17 (test for excess errors) PASS: 23_containers/array/capacity/max_size.cc -std=gnu++17 execution test +PASS: 23_containers/array/capacity/size.cc -std=gnu++17 (test for bogus messages, line 54) ``` libstdc++-v3/ChangeLog: PR libstdc++/101831 * testsuite/23_containers/array/capacity/empty.cc: Add missing brace. * testsuite/23_containers/array/capacity/max_size.cc: Ditto. * testsuite/23_containers/array/capacity/size.cc: Ditto.
2024-09-25Fix testsuite failure on 32-bit targets.Thomas Koenig1-3/+3
gcc/testsuite/ChangeLog: * gfortran.dg/unsigned_25.f90: Change KIND=16 to KIND=8.
2024-09-25Add an alternative testcase for PR 70740Andrew Pinski1-0/+41
While looking into improving phiprop, I noticed that the current pr70740.c testcase was being optimized almost all the way before phiprop because the addresses were considered the same; the arrays were all zero in size. This adds an alternative testcase which changes the array sizes to be 1 and phiprop can and will act on this testcase now and the fix which was being tested is actually tested now. Tested on x86_64-linux-gnu. PR tree-optimization/70740 gcc/testsuite/ChangeLog: * gcc.dg/torture/pr70740-1.c: New test. Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
2024-09-25match: Fix `a != 0 ? a * b : 0` patterns for things that trap [PR116772]Andrew Pinski4-2/+54
For generic, `a != 0 ? a * b : 0` would match where `b` would be an expression which trap (in the case of the testcase, it was an integer division but it could be any). This adds a new helper function, expr_no_side_effects_p which tests if there is no side effects and the expression is not trapping which might be used in other locations. Changes since v1: * v2: Add move check to helper function instead of inlining it. PR middle-end/116772 gcc/ChangeLog: * generic-match-head.cc (expr_no_side_effects_p): New function * gimple-match-head.cc (expr_no_side_effects_p): New function * match.pd (`a != 0 ? a / b : 0`): Check expr_no_side_effects_p. (`a != 0 ? a * b : 0`, `a != 0 ? a & b : 0`): Likewise. gcc/testsuite/ChangeLog: * gcc.dg/torture/pr116772-1.c: New test. Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
2024-09-25c++: Add testcase for DR 2874Jakub Jelinek1-0/+13
Seems we already allow the partial specializations the way the DR clarifies, so this patch just adds a testcase which verifies that. 2024-09-25 Jakub Jelinek <jakub@redhat.com> * g++.dg/DRs/dr2874.C: New test.
2024-09-25c++: Add testcase for DR 2836Jakub Jelinek1-0/+30
Seems we already handle it the way the DR clarifies, if double/long double and std::float64_t have the same mode, foo has long double type (while x + y would be _Float64 in C23), so this patch just adds a testcase which verifies that. 2024-09-25 Jakub Jelinek <jakub@redhat.com> * g++.dg/DRs/dr2836.C: New test.
2024-09-25c++: Add testcase for DR 2728Jakub Jelinek1-0/+20
Seems we already handle delete expressions the way the DR clarifies, so this patch just adds a testcase which verifies that. 2024-09-25 Jakub Jelinek <jakub@redhat.com> * g++.dg/DRs/dr2728.C: New test.
2024-09-25match: Fix A || B not optimized to true when !B implies A [PR114326]Konstantinos Eleftheriou3-0/+140
In expressions like (a != b || ((a ^ b) & c) == d) and (a != b || (a ^ b) == c), (a ^ b) is folded to false. In the equivalent expressions (((a ^ b) & c) == d || a != b) and ((a ^ b) == c || a != b) this is not happening. This patch adds the following simplifications in match.pd: ((a ^ b) & c) cmp d || a != b --> 0 cmp d || a != b (a ^ b) cmp c || a != b --> 0 cmp c || a != b PR tree-optimization/114326 gcc/ChangeLog: * match.pd: Add two patterns to fold a ^ b to 0, when a == b. gcc/testsuite/ChangeLog: * gcc.dg/tree-ssa/fold-xor-and-or.c: New test. * gcc.dg/tree-ssa/fold-xor-or.c: New test. Tested-by: Christoph Müllner <christoph.muellner@vrull.eu> Signed-off-by: Philipp Tomsich <philipp.tomsich@vrull.eu> Signed-off-by: Konstantinos Eleftheriou <konstantinos.eleftheriou@vrull.eu>
2024-09-25Speed up get_bitmask_from_rangeRichard Biener1-4/+1
When min != max we know min ^ max != 0. * value-range.cc (get_bitmask_from_range): Remove redundant compare of xorv with zero.
2024-09-25Speed up wide_int_storage::operator=(wide_int_storage const&)Richard Biener1-3/+3
wide_int_storage shows up high in the profile for the testcase in PR114855 where the apparent issue is that the conditional jump on 'precision' after the (inlined) memcpy stalls the pipeline due to the data dependence and required store-to-load forwarding. We can add scheduling freedom by instead testing precision as from the source which speeds up the function by 30%. I've applied the same logic to the copy CTOR. * wide-int.h (wide_int_storage::wide_int_storage): Branch on source precision to avoid data dependence on memcpy destination. (wide_int_storage::operator=): Likewise.
2024-09-25c++: use TARGET_EXPR accessorsMarek Polacek6-36/+37
While futzing around with PR116416 I noticed that we can use the _SLOT and _INITIAL macros to make the code more readable. gcc/c-family/ChangeLog: * c-pretty-print.cc (c_pretty_printer::primary_expression): Use TARGET_EXPR accessors. (c_pretty_printer::expression): Likewise. gcc/cp/ChangeLog: * coroutines.cc (build_co_await): Use TARGET_EXPR accessors. (finish_co_yield_expr): Likewise. (register_awaits): Likewise. (tmp_target_expr_p): Likewise. (flatten_await_stmt): Likewise. * error.cc (dump_expr): Likewise. * semantics.cc (finish_omp_target_clauses): Likewise. * tree.cc (bot_manip): Likewise. (cp_tree_equal): Likewise. * typeck.cc (cxx_mark_addressable): Likewise. (cp_build_compound_expr): Likewise. (cp_build_modify_expr): Likewise. (check_return_expr): Likewise. Reviewed-by: Jason Merrill <jason@redhat.com>
2024-09-25match: Change (A * B) + (-C) to (B - C/A) * A, if C multiple of A [PR109393]Konstantinos Eleftheriou2-1/+43
The following function: int foo(int *a, int j) { int k = j - 1; return a[j - 1] == a[k]; } does not fold to `return 1;` using -O2 or higher. The cause of this is that the expression `4 * j + (-4)` for the index computation is not folded to `4 * (j - 1)`. Existing simplifications that handle similar cases are applied when A == C, which is not the case in this instance. A previous attempt to address this issue is https://gcc.gnu.org/pipermail/gcc-patches/2024-April/649896.html This patch adds the following simplification in match.pd: (A * B) + (-C) -> (B - C/A) * A, if C a multiple of A which also handles cases where the index is j - 2, j - 3, etc. Bootstrapped for all languages and regression tested on x86-64 and aarch64. PR tree-optimization/109393 gcc/ChangeLog: * match.pd: (A * B) + (-C) -> (B - C/A) * A, if C a multiple of A. gcc/testsuite/ChangeLog: * gcc.dg/pr109393.c: New test. Tested-by: Christoph Müllner <christoph.muellner@vrull.eu> Signed-off-by: Philipp Tomsich <philipp.tomsich@vrull.eu> Signed-off-by: Konstantinos Eleftheriou <konstantinos.eleftheriou@vrull.eu>
2024-09-25remove dominator recursion from reassocRichard Biener1-13/+32
The reassoc pass currently walks dominators in a recursive way where I ran into a stack overflow with. The following replaces it with worklists following patterns used elsewhere. * tree-ssa-reassoc.cc (break_up_subtract_bb): Remove recursion. (reassociate_bb): Likewise. (do_reassoc): Implement worklist based dominator walks for both break_up_subtract_bb and reassociate_bb.
2024-09-25Remove recursion in simplify_control_stmt_condition_1 [PR114855].Aldy Hernandez1-118/+0
Remove some ad-hoc simplification code in the forward threader, as the call into the ranger in m_simplifier->simplify() will handle anything we can do manually in simplify_control_stmt_condition_1. In PR114855, DOM time is reduced from 120s to 92s (-23%) and overall compilation time from 235s to 205s (-12%). The total thread count at -O1 is unchanged for the testcase. In our bootstrap .ii benchmark suite, I see we thread 3 threads less over all files at -O1. At -O2, the backward threader picks up one more, for no difference over all. PR tree-optimization/114855 gcc/ChangeLog: * tree-ssa-threadedge.cc: Remove unneeded recursion.
2024-09-25libstdc++: #ifdef out #pragma GCC system_headerJason Merrill355-18/+703
In r15-3714-gd3a7302ec5985a I added -Wsystem-headers to the libstdc++ build flags to help catch problems in the library. This patch takes a different approach, of disabling the #pragma system_header unless _GLIBCXX_SYSHDR is defined. As a result, the testsuites will treat them as non-system-headers to get better warning coverage during regression testing of both gcc and libstdc++, not just when building the library. My rationale for the #ifdef instead of just removing the #pragma is the three G++ tests that want to test libstdc++ system header behavior, so we need a way to select it. This doesn't affect installed libraries, as they get their system-header status from the lookup path. But testsuite_flags --build-includes gives -I directives rather than -isystem. This patch doesn't change the headers in config/ because I'm not compiling with most of them, so won't see any warnings that need fixing. Adjusting them could happen later, or we can not bother. libstdc++-v3/ChangeLog: * acinclude.m4 (WARN_FLAGS): Remove -Wsystem-headers. * configure: Regenerate. * include/bits/algorithmfwd.h: #ifdef out #pragma GCC system_header. * include/bits/atomic_base.h * include/bits/atomic_futex.h * include/bits/atomic_timed_wait.h * include/bits/atomic_wait.h * include/bits/basic_ios.h * include/bits/basic_string.h * include/bits/boost_concept_check.h * include/bits/char_traits.h * include/bits/charconv.h * include/bits/chrono.h * include/bits/chrono_io.h * include/bits/codecvt.h * include/bits/concept_check.h * include/bits/cpp_type_traits.h * include/bits/elements_of.h * include/bits/enable_special_members.h * include/bits/erase_if.h * include/bits/forward_list.h * include/bits/functional_hash.h * include/bits/gslice.h * include/bits/gslice_array.h * include/bits/hashtable.h * include/bits/indirect_array.h * include/bits/invoke.h * include/bits/ios_base.h * include/bits/iterator_concepts.h * include/bits/locale_classes.h * include/bits/locale_facets.h * include/bits/locale_facets_nonio.h * include/bits/localefwd.h * include/bits/mask_array.h * include/bits/max_size_type.h * include/bits/memory_resource.h * include/bits/memoryfwd.h * include/bits/move_only_function.h * include/bits/node_handle.h * include/bits/ostream_insert.h * include/bits/out_ptr.h * include/bits/parse_numbers.h * include/bits/postypes.h * include/bits/quoted_string.h * include/bits/range_access.h * include/bits/ranges_base.h * include/bits/refwrap.h * include/bits/sat_arith.h * include/bits/semaphore_base.h * include/bits/slice_array.h * include/bits/std_abs.h * include/bits/std_function.h * include/bits/std_mutex.h * include/bits/std_thread.h * include/bits/stl_iterator_base_funcs.h * include/bits/stl_iterator_base_types.h * include/bits/stl_tree.h * include/bits/stream_iterator.h * include/bits/streambuf_iterator.h * include/bits/stringfwd.h * include/bits/this_thread_sleep.h * include/bits/unique_lock.h * include/bits/uses_allocator_args.h * include/bits/utility.h * include/bits/valarray_after.h * include/bits/valarray_array.h * include/bits/valarray_before.h * include/bits/version.h * include/c_compatibility/fenv.h * include/c_compatibility/inttypes.h * include/c_compatibility/stdint.h * include/decimal/decimal.h * include/experimental/bits/net.h * include/experimental/bits/shared_ptr.h * include/ext/aligned_buffer.h * include/ext/alloc_traits.h * include/ext/atomicity.h * include/ext/concurrence.h * include/ext/numeric_traits.h * include/ext/pod_char_traits.h * include/ext/pointer.h * include/ext/stdio_filebuf.h * include/ext/stdio_sync_filebuf.h * include/ext/string_conversions.h * include/ext/type_traits.h * include/ext/vstring.h * include/ext/vstring_fwd.h * include/ext/vstring_util.h * include/parallel/algorithmfwd.h * include/parallel/numericfwd.h * include/tr1/functional_hash.h * include/tr1/hashtable.h * include/tr1/random.h * libsupc++/exception.h * libsupc++/hash_bytes.h * include/bits/basic_ios.tcc * include/bits/basic_string.tcc * include/bits/fstream.tcc * include/bits/istream.tcc * include/bits/locale_classes.tcc * include/bits/locale_facets.tcc * include/bits/locale_facets_nonio.tcc * include/bits/ostream.tcc * include/bits/sstream.tcc * include/bits/streambuf.tcc * include/bits/string_view.tcc * include/bits/version.tpl * include/experimental/bits/string_view.tcc * include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp * include/ext/random.tcc * include/ext/vstring.tcc * include/tr2/bool_set.tcc * include/tr2/dynamic_bitset.tcc * include/bits/c++config * include/c/cassert * include/c/cctype * include/c/cerrno * include/c/cfloat * include/c/ciso646 * include/c/climits * include/c/clocale * include/c/cmath * include/c/csetjmp * include/c/csignal * include/c/cstdarg * include/c/cstddef * include/c/cstdio * include/c/cstdlib * include/c/cstring * include/c/ctime * include/c/cuchar * include/c/cwchar * include/c/cwctype * include/c_global/cassert * include/c_global/ccomplex * include/c_global/cctype * include/c_global/cerrno * include/c_global/cfenv * include/c_global/cfloat * include/c_global/cinttypes * include/c_global/ciso646 * include/c_global/climits * include/c_global/clocale * include/c_global/cmath * include/c_global/csetjmp * include/c_global/csignal * include/c_global/cstdalign * include/c_global/cstdarg * include/c_global/cstdbool * include/c_global/cstddef * include/c_global/cstdint * include/c_global/cstdio * include/c_global/cstdlib * include/c_global/cstring * include/c_global/ctgmath * include/c_global/ctime * include/c_global/cuchar * include/c_global/cwchar * include/c_global/cwctype * include/c_std/cassert * include/c_std/cctype * include/c_std/cerrno * include/c_std/cfloat * include/c_std/ciso646 * include/c_std/climits * include/c_std/clocale * include/c_std/cmath * include/c_std/csetjmp * include/c_std/csignal * include/c_std/cstdarg * include/c_std/cstddef * include/c_std/cstdio * include/c_std/cstdlib * include/c_std/cstring * include/c_std/ctime * include/c_std/cuchar * include/c_std/cwchar * include/c_std/cwctype * include/debug/array * include/debug/bitset * include/debug/deque * include/debug/forward_list * include/debug/list * include/debug/map * include/debug/set * include/debug/string * include/debug/unordered_map * include/debug/unordered_set * include/debug/vector * include/decimal/decimal * include/experimental/algorithm * include/experimental/any * include/experimental/array * include/experimental/buffer * include/experimental/chrono * include/experimental/contract * include/experimental/deque * include/experimental/executor * include/experimental/filesystem * include/experimental/forward_list * include/experimental/functional * include/experimental/internet * include/experimental/io_context * include/experimental/iterator * include/experimental/list * include/experimental/map * include/experimental/memory * include/experimental/memory_resource * include/experimental/net * include/experimental/netfwd * include/experimental/numeric * include/experimental/propagate_const * include/experimental/ratio * include/experimental/regex * include/experimental/scope * include/experimental/set * include/experimental/socket * include/experimental/string * include/experimental/string_view * include/experimental/synchronized_value * include/experimental/system_error * include/experimental/timer * include/experimental/tuple * include/experimental/type_traits * include/experimental/unordered_map * include/experimental/unordered_set * include/experimental/vector * include/ext/algorithm * include/ext/cmath * include/ext/functional * include/ext/iterator * include/ext/memory * include/ext/numeric * include/ext/random * include/ext/rb_tree * include/ext/rope * include/parallel/algorithm * include/std/algorithm * include/std/any * include/std/array * include/std/atomic * include/std/barrier * include/std/bit * include/std/bitset * include/std/charconv * include/std/chrono * include/std/codecvt * include/std/complex * include/std/concepts * include/std/condition_variable * include/std/coroutine * include/std/deque * include/std/execution * include/std/expected * include/std/filesystem * include/std/format * include/std/forward_list * include/std/fstream * include/std/functional * include/std/future * include/std/generator * include/std/iomanip * include/std/ios * include/std/iosfwd * include/std/iostream * include/std/istream * include/std/iterator * include/std/latch * include/std/limits * include/std/list * include/std/locale * include/std/map * include/std/memory * include/std/memory_resource * include/std/mutex * include/std/numbers * include/std/numeric * include/std/optional * include/std/ostream * include/std/print * include/std/queue * include/std/random * include/std/ranges * include/std/ratio * include/std/regex * include/std/scoped_allocator * include/std/semaphore * include/std/set * include/std/shared_mutex * include/std/span * include/std/spanstream * include/std/sstream * include/std/stack * include/std/stacktrace * include/std/stdexcept * include/std/streambuf * include/std/string * include/std/string_view * include/std/syncstream * include/std/system_error * include/std/text_encoding * include/std/thread * include/std/tuple * include/std/type_traits * include/std/typeindex * include/std/unordered_map * include/std/unordered_set * include/std/utility * include/std/valarray * include/std/variant * include/std/vector * include/std/version * include/tr1/array * include/tr1/cfenv * include/tr1/cinttypes * include/tr1/cmath * include/tr1/complex * include/tr1/cstdbool * include/tr1/cstdint * include/tr1/cstdio * include/tr1/cstdlib * include/tr1/cwchar * include/tr1/cwctype * include/tr1/functional * include/tr1/memory * include/tr1/random * include/tr1/regex * include/tr1/tuple * include/tr1/type_traits * include/tr1/unordered_map * include/tr1/unordered_set * include/tr1/utility * include/tr2/bool_set * include/tr2/dynamic_bitset * include/tr2/type_traits * libsupc++/atomic_lockfree_defines.h * libsupc++/compare * libsupc++/cxxabi.h * libsupc++/cxxabi_forced.h * libsupc++/cxxabi_init_exception.h * libsupc++/exception * libsupc++/initializer_list * libsupc++/new * libsupc++/typeinfo: Likewise. * testsuite/20_util/ratio/operations/ops_overflow_neg.cc * testsuite/23_containers/array/tuple_interface/get_neg.cc * testsuite/23_containers/vector/cons/destructible_debug_neg.cc * testsuite/24_iterators/operations/prev_neg.cc * testsuite/ext/type_traits/add_unsigned_floating_neg.cc * testsuite/ext/type_traits/add_unsigned_integer_neg.cc * testsuite/ext/type_traits/remove_unsigned_floating_neg.cc * testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Adjust line numbers. gcc/testsuite/ChangeLog * g++.dg/analyzer/fanalyzer-show-events-in-system-headers-default.C * g++.dg/analyzer/fanalyzer-show-events-in-system-headers-no.C * g++.dg/diagnostic/disable.C: #define _GLIBCXX_SYSHDR.
2024-09-25libstdc++: more #pragma diagnosticJason Merrill2-0/+10
The CI saw failures on 17_intro/headers/c++2011/parallel_mode.cc due to -Wdeprecated-declarations warnings in some parallel/ headers. libstdc++-v3/ChangeLog: * include/parallel/base.h: Suppress -Wdeprecated-declarations. * include/parallel/multiseq_selection.h: Likewise.
2024-09-25Use tree view for find_always_executed_bbs resultRichard Biener1-0/+1
The following makes us use bitmap tree view for the always-executed-BBs bitmap as computed by IPA utils find_always_executed_bbs and used by IPA modref (where it shows up in the profile for PR114855. * ipa-utils.cc (find_always_executed_bbs): Switch result bitmap to tree view.
2024-09-25OpenMP: Update OMP_REQUIRES_TARGET_USED for declare_target + interopTobias Burnus5-5/+15
Older versions of the OpenMP specification were not clear about what counted as device usage. Newer (like TR13) are rather clear. Hence, this commit adds GCC's target-used flag also when a 'declare target' or an 'interop' are encountered. (The latter only to Fortran as C/C++ parsing support is still missing.) TR13 also lists 'dispatch' as target-used construct (as it has the device clause) and 'device_safesync' as clause with global requirement property, but both are not yet supported in GCC. gcc/c/ChangeLog: * c-parser.cc (c_parser_omp_declare_target): Set target-used bit in omp_requires_mask. gcc/cp/ChangeLog: * parser.cc (cp_parser_omp_declare_target): Set target-used bit in omp_requires_mask. gcc/fortran/ChangeLog: * parse.cc (decode_omp_directive): Set target-used bit of omp_requires_mask when encountering the declare_target or interop directive. gcc/testsuite/ChangeLog: * gfortran.dg/gomp/interop-1.f90: Add dg-error for missing omp requires requirement and declare_variant usage. * gfortran.dg/gomp/requires-8.f90: Likewise.
2024-09-25RISC-V: Cleanup debug code for SAT_* testcases [NFC]Pan Li1-5/+0
Some print code for debugging is committed by mistake, remove them from the test header file. It is test only patch and obvious up to a point, will commit it directly if no comments in next 48H. gcc/testsuite/ChangeLog: * gcc.target/riscv/scalar_sat_binary_run_xxx.h: Remove printf code for debugging. Signed-off-by: Pan Li <pan2.li@intel.com>