- Sep 01, 2022
-
-
Jakub Jelinek authored
The following patch introduces a new warning - -Winvalid-utf8 similarly to what clang now has - to diagnose invalid UTF-8 byte sequences in comments, but not just in those, but also in string/character literals and outside of them. The warning is on by default when explicit -finput-charset=UTF-8 is used and C++23 compilation is requested and if -{,W}pedantic or -pedantic-errors it is actually a pedwarn. The reason it is on by default only for -finput-charset=UTF-8 is that the sources often are UTF-8, but sometimes could be some ASCII compatible single byte encoding where non-ASCII characters only appear in comments. So having the warning off by default is IMO desirable. The C++23 pedantic mode for when the source code is UTF-8 is -std=c++23 -pedantic-errors -finput-charset=UTF-8. 2022-09-01 Jakub Jelinek <jakub@redhat.com> PR c++/106655 libcpp/ * include/cpplib.h (struct cpp_options): Implement C++23 P2295R6 - Support for UTF-8 as a portable source ... -
Aldy Hernandez authored
I'm just shuffling the FP self tests here, with no change to existing functionality. If we agree that explicit NANs in the source code with !HONOR_NANS should behave any differently, I'm happy to address whatever needs fixing, but for now I'd like to unblock the !HONOR_NANS build systems. I have added an adaptation of a test Jakub suggested we handle in the PR: void funk(int cond) { float x; if (cond) x = __builtin_nan (""); else x = 1.24; bar(x); } For !HONOR_NANS, the range for the PHI of x_1 is the union of 1.24 and NAN which is really 1.24 with a maybe NAN. This reflects the IL-- the presence of the actual NAN. However, VRP will propagate this because it sees the 1.24 and ignores the possibility of a NAN, per !HONOR_NANS. IMO, this is correct. OTOH, for HONOR_NANS the unknown NAN property keeps us from propagating the value. Is there a reason we don't warn for calls to __builtin_nan when !HONOR_NANS? That makes no sense to me. PR tree-optimization/106785 gcc/ChangeLog: * value-range.cc (range_tests_nan): Adjust tests for !HONOR_NANS. (range_tests_floats): Same. gcc/testsuite/ChangeLog: * gcc.dg/tree-ssa/vrp-float-nan-1.c: New test. -
konglin1 authored
gcc/ChangeLog: * tree-if-conv.cc (is_cond_scalar_reduction): Add MULT_EXPR recognition. gcc/testsuite/ChangeLog: * gcc.dg/tree-ssa/gen-vect-34.c: New test. * gcc.dg/vect/vect-ifcvt-18.c: New test.
-
Kewen Lin authored
Commit r12-2266 updated the scanned assembly content from "{\mlvx\M|\mlxv\M|\mlxvd2x\M}" to "{\mp?lxv\M|\mlxv\M|\mlxvd2x\M}" for the test case pr86731-fwrapv-longlong.c unexpectedly. It's meant to update "lxv" to "p?lxv", should leave the "lvx" unchanged. So fix the typo accordingly. PR testsuite/106682 gcc/testsuite/ChangeLog: * gcc.target/powerpc/pr86731-fwrapv-longlong.c: Fix typo. -
Peter Bergner authored
When we expand an MMA disassemble built-in with C++ using a pointer that is cast to a valid MMA type, the type isn't passed down to the expand machinery and we end up using the base type of the pointer which leads to an ICE. This patch enforces we always use the correct MMA type regardless of the pointer type being used. 2022-08-31 Peter Bergner <bergner@linux.ibm.com> gcc/ PR target/101322 * config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_mma_builtin): Enforce the use of a valid MMA pointer type. gcc/testsuite/ PR target/101322 * g++.target/powerpc/pr101322.C: New test.
-
zhongjuzhe authored
gcc/ChangeLog: * config/riscv/riscv.cc (riscv_conditional_register_usage): Add vector registers.
-
zhongjuzhe authored
gcc/ChangeLog: * config/riscv/riscv.cc (riscv_const_insns): Add cost of poly_int. (riscv_output_move): Add csrr vlenb assembly. * config/riscv/riscv.md (move_type): Add csrr vlenb type. (ext): New attribute. (ext_enabled): Ditto. (enabled): Ditto.
-
zhongjuzhe authored
gcc/ChangeLog: * config/riscv/constraints.md (TARGET_VECTOR ? V_REGS : NO_REGS): Add "vr" constraint. (TARGET_VECTOR ? VD_REGS : NO_REGS): Add "vd" constraint. (TARGET_VECTOR ? VM_REGS : NO_REGS): Add "vm" constraint. (vp): Add poly constraint.
-
zhongjuzhe authored
gcc/ChangeLog: * config/riscv/riscv.h (enum reg_class): Change vype to vtype.
-
zhongjuzhe authored
gcc/ChangeLog: * config/riscv/riscv.cc (riscv_convert_vector_bits): Change configuration according to TARGET_MIN_VLEN. * config/riscv/riscv.h (UNITS_PER_FP_REG): Fix comment.
-
GCC Administrator authored
-
Joseph Myers authored
Implement some changes to the currently supported C2x standard attributes that have been made to the specification since they were first implemented in GCC, and some consequent changes: * maybe_unused is now supported on labels. In fact that was already accidentally supported in GCC as a result of sharing the implementation with __attribute__ ((unused)), but needed to be covered in the tests. * As part of the support for maybe_unused on labels, its __has_c_attribute value changed. * The issue of maybe_unused accidentally being already supported on labels showed up the lack of tests for other standard attributes being incorrectly applied to labels; add such tests. * Use of fallthrough or nodiscard attributes on labels already properly resulted in a pedwarn. For the deprecated attribute, however, there was only a warning, and the wording "'deprecated' attribute ignored for 'void'" included an unhelpful "for 'void'". Arrange for the case of the deprecated attribute on a label to be checked for separately and result in a pedwarn. As with inappropriate uses of fallthrough (see commit 6c80b1b5), it seems reasonable for this pedwarn to apply regardless of whether [[]] or __attribute__ was used and regardless of whether C or C++ is being compiled. * Attributes on case or default labels (the standard syntax supports attributes on all kinds of labels) were quietly ignored, whether or not appropriate for use in such a context, because they weren't passed to decl_attributes at all. (Note where I'm changing the do_case prototype that such a function is actually only defined in the C front end, not for C++, despite the declaration being in c-common.h.) * A recent change as part of the editorial review in preparation for the C2x CD ballot has changed the __has_c_attribute value for fallthrough to 201910 to reflect when that attribute was actually voted into the working draft. Bootstrapped with no regressions for x86_64-pc-linux-gnu. gcc/c-family/ * c-attribs.cc (handle_deprecated_attribute): Check and pedwarn for LABEL_DECL. * c-common.cc (c_add_case_label): Add argument ATTRS. Call decl_attributes. * c-common.h (do_case, c_add_case_label): Update declarations. * c-lex.cc (c_common_has_attribute): For C, produce a result of 201910 for fallthrough and 202106 for maybe_unused. gcc/c/ * c-parser.cc (c_parser_label): Pass attributes to do_case. * c-typeck.cc (do_case): Add argument ATTRS. Pass it to c_add_case_label. gcc/testsuite/ * gcc.dg/c2x-attr-deprecated-2.c, gcc.dg/c2x-attr-fallthrough-2.c, gcc.dg/c2x-attr-maybe_unused-1.c, gcc.dg/c2x-attr-nodiscard-2.c: Add tests of attributes on labels. * gcc.dg/c2x-has-c-attribute-2.c: Update expected results for maybe_unused and fallthrough.
-
Patrick Palka authored
libstdc++-v3/ChangeLog: * include/bits/ranges_base.h (__advance_fn::operator()): Add parentheses in assert condition to avoid -Wparentheses warning. * include/std/ranges: (take_view::take_view): Uglify 'base'. (take_while_view::take_while_view): Likewise. (elements_view::elements_view): Likewise. (views::_Zip::operator()): Adjust position of [[nodiscard]] for compatibility with -fconcepts-ts. (zip_transform_view::_Sentinel): Uglify 'OtherConst'. (views::_ZipTransform::operator()): Adjust position of [[nodiscard]] for compatibilty with -fconcepts-ts.
-
Martin Liska authored
fixincludes/ChangeLog: * configure: Regenerate. libitm/ChangeLog: * configure: Regenerate.
-
Martin Liska authored
ChangeLog: * configure: Regenerate. * configure.ac: Delete hpux9 and hpux10. config/ChangeLog: * mh-pa-hpux10: Removed. contrib/ChangeLog: * config-list.mk: Remove deprecated ports. contrib/header-tools/ChangeLog: * README: Remove deprecated ports. * reduce-headers: Likewise. gcc/ChangeLog: * config.build: Remove deprecated ports. * config.gcc: Likewise. * config.host: Likewise. * configure.ac: Likewise. * configure: Regenerate. * config/pa/pa-hpux10.h: Removed. * config/pa/pa-hpux10.opt: Removed. * config/pa/t-dce-thr: Removed. gnattools/ChangeLog: * configure.ac: Remove deprecated ports. * configure: Regenerate. libstdc++-v3/ChangeLog: * configure: Regenerate. * crossconfig.m4: Remove deprecated ports. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/lambda/lambda-conv.C: Remove useless test. * gcc.c-torture/execute/ieee/hugeval.x: Likewise. * gcc.dg/torture/pr47917.c: Likewise. * lib/target-supports.exp: Likewise. libgcc/ChangeLog: * config.host: Remove hppa. libitm/ChangeLog: * configure: Regenerate. fixincludes/ChangeLog: * configure: Regenerate.
-
Jonathan Wakely authored
std::string now has [[nodiscard]] attributes on most members, causing -Wunused-result warnings for this test. gcc/testsuite/ChangeLog: PR testsuite/106795 * g++.dg/tree-ssa/empty-loop.C: Use -Wno-unused-result.
-
Martin Liska authored
Always install limits.h and syslimits.h header files to include folder. When --disable-fixincludes is used, then no system header files are fixed by the tools in fixincludes. Moreover, the fixincludes tools are not built any longer. gcc/ChangeLog: * Makefile.in: Always install limits.h and syslimits.h to include folder. * configure.ac: Assign STMP_FIXINC blank if --disable-fixincludes is used. * configure: Regenerate.
-
François Dumont authored
Review null string checks to show: _String != nullptr rather than: _String != 0 libstdc++-v3/ChangeLog: * include/debug/debug.h: Use nullptr rather than '0' in checks in post-C++11. * include/debug/string: Likewise. * testsuite/21_strings/basic_string/operations/ends_with/char.cc: Use __gnu_test::string. * testsuite/21_strings/basic_string/operations/ends_with/nonnull.cc: Likewise. * testsuite/21_strings/basic_string/operations/ends_with/wchar_t.cc: Likewise. * testsuite/21_strings/basic_string/operations/starts_with/wchar_t.cc: Likewise. * testsuite/21_strings/basic_string/operations/starts_with/nonnull.cc: Likewise. * testsuite/21_strings/basic_string/operations/starts_with/char.cc: Likewise..
-
Patrick Palka authored
libstdc++-v3/ChangeLog: * include/std/ranges (adjacent_view): Define. (enable_borrowed_range<adjacent_view>): Define. (__detail::__repeated_tuple): Define. (adjacent_view::_Iterator): Define. (adjacent_view::_Sentinel): Define. (views::__detail::__can_adjacent_view): Define. (views::_Adjacent): Define. (views::adjacent): Define. (views::pairwise): Define. * testsuite/std/ranges/adaptors/adjacent/1.cc: New test.
-
François Dumont authored
Add _GLIBCXX_DEBUG_BACKTRACE macro to activate backtrace generation on _GLIBCXX_DEBUG assertions. Prerequisite is to have configure the lib with: --enable-libstdcxx-backtrace=yes libstdc++-v3/ChangeLog: * include/debug/formatter.h [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_state): Declare. [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_create_state): Declare. [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_full_callback): Define. [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_error_callback): Define. [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_full_func): Define. [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_full): Declare. [_GLIBCXX_HAVE_STACKTRACE](_Error_formatter::_M_backtrace_state): New. [_GLIBCXX_HAVE_STACKTRACE](_Error_formatter::_M_backtrace_full): New. * src/c++11/debug.cc [_GLIBCXX_HAVE_STACKTRACE](print_backtrace): New. (_Error_formatter::_M_error()): Adapt. * src/libbacktrace/Makefile.am: Add backtrace.c. * src/libbacktrace/Makefile.in: Regenerate. * src/libbacktrace/backtrace-rename.h (backtrace_full): New. * testsuite/23_containers/vector/debug/assign4_backtrace_neg.cc: New test. * doc/xml/manual/debug_mode.xml: Document _GLIBCXX_DEBUG_BACKTRACE. * doc/xml/manual/using.xml: Likewise.
-
- Aug 31, 2022
-
-
Richard Sandiford authored
The tests for sizeless SVE types include checks that the types are handled for initialisation purposes in the same way as scalars. GNU C and C2x now allow scalars to be initialised using empty braces, so this patch updates the SVE tests to match. gcc/testsuite/ * gcc.target/aarch64/sve/acle/general-c/gnu_vectors_1.c: Update tests for empty initializers. * gcc.target/aarch64/sve/acle/general-c/gnu_vectors_2.c: Likewise. * gcc.target/aarch64/sve/acle/general-c/sizeless-1.c: Likewise. * gcc.target/aarch64/sve/acle/general-c/sizeless-2.c: Likewise.
-
Richard Biener authored
When processing USE predicates we can drop from the AND chain, when procsssing DEF predicates we can drop from the OR chain. Do that instead of giving up completely. This also removes cases that should never trigger. * gimple-predicate-analysis.cc (predicate::init_from_control_deps): Assert the guard_bb isn't empty and has more than one successor. Drop appropriate parts of the predicate when an edge fails to register a predicate. (predicate::dump): Dump empty predicate as TRUE.
-
Patrick Palka authored
libstdc++-v3/ChangeLog: * testsuite/20_util/logical_traits/requirements/short_circuit.cc: New test.
-
Jonathan Wakely authored
This isn't required by the standard, but there's an LWG issue suggesting to add it. Also use __invoke_result instead of result_of, to match the spec in recent standards. libstdc++-v3/ChangeLog: * include/bits/refwrap.h (reference_wrapper::operator()): Add noexcept-specifier and use __invoke_result instead of result_of. * testsuite/20_util/reference_wrapper/invoke-noexcept.cc: New test.
-
Jonathan Wakely authored
libstdc++-v3/ChangeLog: * testsuite/20_util/reference_wrapper/invoke-2.cc: Improve comments. * testsuite/20_util/reference_wrapper/invoke-3.cc: Likewise. * testsuite/20_util/reference_wrapper/invoke.cc: Likewise.
-
Richard Biener authored
r12-3640-g94c12ffa sneaked in a hack to avoid the diagnostic for the testcase in PR90994 which sees non-call EH control flow confusing predicate analysis. The following patch instead adjusts the existing code handling EH to handle non-calls and do what I think was intented. PR tree-optimization/90994 * gimple-predicate-analysis.cc (predicate::init_from_control_deps): Ignore exceptional control flow and skip the edge for the purpose of predicate generation also for non-calls. * g++.dg/torture/pr90994.C: New testcase.
-
Aldy Hernandez authored
We only stream out the FP properties for global float ranges (currently only NAN). The following patch adds the endpoints as well. gcc/ChangeLog: * value-range-storage.cc (frange_storage_slot::set_frange): Save endpoints. (frange_storage_slot::get_frange): Restore endpoints. * value-range-storage.h (class frange_storage_slot): Add endpoint fields.
-
Martin Liska authored
PR tree-optimization/106789 gcc/ChangeLog: * range-op-float.cc (default_frelop_fold_range): Remove the function.
-
Martin Liska authored
gcc/ChangeLog: * value-range.h: Add more override keywords.
-
Martin Liska authored
Fixes: gcc/value-range.h:357:16: warning: 'set_nonnegative' overrides a member function but is not marked 'override' [-Winconsistent-missing-override] gcc/ChangeLog: * value-range.h: Add override.
-
Richard Biener authored
When uninit computes the actual predicates from the control dependence edges it currently skips those that are assert-like (where one edge leads to a block which ends in a noreturn call). That leads to bogus uninit diagnostics when applied on the USE side. PR tree-optimization/65244 * gimple-predicate-analysis.h (predicate::init_from_control_deps): Add argument to specify whether the predicate is for the USE. * gimple-predicate-analysis.cc (predicate::init_from_control_deps): Also include predicates effective fallthru control edges when the predicate is for the USE. * gcc.dg/uninit-pr65244-2.c: New testcase.
-
Richard Biener authored
The following makes predicate analysis handle case labels with a non-singleton contiguous range. PR tree-optimization/73550 * gimple-predicate-analysis.cc (predicate::init_from_control_deps): Sanitize debug dumping. Handle case labels with a CASE_HIGH. (predicate::dump): Adjust for better readability.
-
Jonathan Wakely authored
libstdc++-v3/ChangeLog: * include/bits/basic_string.h (basic_string): Add nodiscard attribute to all relevant functions. * include/std/string_view (basic_string_view): Likewise. * testsuite/21_strings/basic_string/capacity/1.cc: Cast unused results to void. * testsuite/21_strings/basic_string/capacity/char/1.cc: Likewise. * testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string/cons/char/self_move.cc: Likewise. * testsuite/21_strings/basic_string/element_access/char/1.cc: Likewise. * testsuite/21_strings/basic_string/element_access/char/21674.cc: Likewise. * testsuite/21_strings/basic_string/element_access/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string/element_access/wchar_t/21674.cc: Likewise. * testsuite/21_strings/basic_string/lwg2758.cc: Likewise. * testsuite/21_strings/basic_string/lwg2946.cc: Likewise. * testsuite/21_strings/basic_string/operations/contains/nonnull.cc: Add -Wno-unused-result to options. * testsuite/21_strings/basic_string/operations/ends_with/nonnull.cc: Likewise. * testsuite/21_strings/basic_string/operations/starts_with/nonnull.cc: Likewise. * testsuite/21_strings/basic_string/operators/char/1.cc: Cast unused results to void. * testsuite/21_strings/basic_string/operators/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/capacity/1.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/char/1.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/char/2.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/contains/nonnull.cc: Likewise. Add -Wno-unused-result to options. * testsuite/21_strings/basic_string_view/operations/ends_with/nonnull.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/starts_with/nonnull.cc: Likewise. * testsuite/27_io/basic_stringbuf/sputbackc/char/1.cc: Cast unused results to void. * testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/1.cc: Likewise. * testsuite/27_io/basic_stringbuf/sungetc/char/1.cc: Likewise. * testsuite/27_io/basic_stringbuf/sungetc/wchar_t/1.cc: Likewise.
-
Richard Biener authored
The PR65244 has an issue with code in init_from_control_deps for which there's no direct testcase. The following adds one. PR tree-optimization/65244 * gcc.dg/uninit-pr65244-1.c: New testcase.
-
Jakub Jelinek authored
The assertion ensures that we point within the image and at a byte we haven't touched yet (or at least that it isn't the first byte of an already stored tree), some static checker was unhappy about first checking that it is zero and only afterwards checking that it is within bounds. 2022-08-31 Jakub Jelinek <jakub@redhat.com> PR preprocessor/106778 * makeuname2c.cc (write_nodes): Reverse order of && operands in assert.
-
Jakub Jelinek authored
This patch fixes -Werror=sign-compare errors during stage2/stage3. 2022-08-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> Jakub Jelinek <jakub@redhat.com> * omp-simd-clone.cc (simd_clone_adjust_return_type, simd_clone_adjust_argument_types): Use known_eq (veclen, 0U) instead of known_eq (veclen, 0) to avoid -Wsign-compare warnings.
-
Richard Sandiford authored
One call to dump_printf_loc had a stray left-over argument from an earlier version of the patch. This went unnoticed on aarch64-linux-gnu and x86_64-linux-gnu since the parameters that actually mattered were passed in FPRs rather than GPRs, but I assume this is the reason for the i686-linux-gnu failures that Jakub hit. gcc/ * tree-vect-slp.cc (vect_optimize_slp_pass::dump): Remove bogus argument.
-
zhongjuzhe authored
gcc/ChangeLog: * tree-vect-loop-manip.cc (vect_gen_vector_loop_niters): Simply initialize const_vf to 0.
-
Martin Liska authored
gcc/ChangeLog: * config.gcc: Remove cr16.
-
Xi Ruoyao authored
The LoongArch support for libubsan and libasan has been added in: - https://reviews.llvm.org/D129371 - https://reviews.llvm.org/D129418 and we've merged them in r13-2269. It's time to enable them. No unexpected failures in GCC asan.exp and ubsan.exp tests. libsanitizer/ChangeLog: * configure.tgt: Allow loongarch64-*-linux*.
-