aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2022-05-08Daily bump.GCC Administrator6-1/+49
2022-05-07c, c++: attribute format on a ctor with a vbase [PR101833, PR47634]Marek Polacek11-55/+207
Attribute format takes three arguments: archetype, string-index, and first-to-check. The last two specify the position in the function parameter list. r63030 clarified that "Since non-static C++ methods have an implicit this argument, the arguments of such methods should be counted from two, not one, when giving values for string-index and first-to-check." Therefore one has to write struct D { D(const char *, ...) __attribute__((format(printf, 2, 3))); }; However -- and this is the problem in this PR -- ctors with virtual bases also get two additional parameters: the in-charge parameter and the VTT parameter (added in maybe_retrofit_in_chrg). In fact we'll end up with two clones of the ctor: an in-charge and a not-in-charge version (see build_cdtor_clones). That means that the argument position the user specified in the attribute argument will refer to different arguments, depending on which constructor we're currently dealing with. This can cause a range of problems: wrong errors, confusing warnings, or crashes. This patch corrects that; for C we don't have to do anything, and in C++ we can use num_artificial_parms_for. It would be wrong to rewrite the attributes the user supplied, so I've changed POS to be passed by reference so that we don't have to change all the call sites of positional_argument and we still get the default_conversion adjustment. Attribute format_arg is not affected, because it requires that the function returns "const char *" which will never be the case for cdtors. PR c++/101833 PR c++/47634 gcc/c-family/ChangeLog: * c-attribs.cc (positional_argument): Pass POS by reference. Deal with FN being either a function declaration or function type. Use maybe_adjust_arg_pos_for_attribute. * c-common.cc (check_function_arguments): Maybe pass FNDECL down to check_function_format. * c-common.h (maybe_adjust_arg_pos_for_attribute): Declare. (positional_argument): Adjust. * c-format.cc (get_constant): Rename to ... (validate_constant): ... this. Take EXPR by reference. Return bool instead of tree. (handle_format_arg_attribute): Don't overwrite FORMAT_NUM_EXPR by the return value of validate_constant. (decode_format_attr): Don't overwrite FORMAT_NUM_EXPR and FIRST_ARG_NUM_EXPR by the return value of validate_constant. (check_function_format): Adjust a parameter name. (handle_format_attribute): Maybe pass FNDECL down to decode_format_attr. gcc/c/ChangeLog: * c-objc-common.cc (maybe_adjust_arg_pos_for_attribute): New. gcc/cp/ChangeLog: * tree.cc (maybe_adjust_arg_pos_for_attribute): New. gcc/ChangeLog: * tree-core.h (struct attribute_spec): Update comment for HANDLER. gcc/testsuite/ChangeLog: * g++.dg/ext/attr-format-arg1.C: New test. * g++.dg/ext/attr-format1.C: New test. * g++.dg/ext/attr-format2.C: New test. * g++.dg/ext/attr-format3.C: New test.
2022-05-07Daily bump.GCC Administrator7-1/+135
2022-05-06compiler: remove Array_index_expression::is_lvalue_Ian Lance Taylor5-45/+9
As of CL 77510 it is never true. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/394695
2022-05-06libstdc++: Simplify std::normal_distribution equality operatorJonathan Wakely3-10/+22
libstdc++-v3/ChangeLog: * include/bits/random.tcc (operator==): Only check normal_distribution::_M_saved_available once. * testsuite/26_numerics/random/normal_distribution/operators/equal.cc: Check equality after state changes. * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
2022-05-06libstdc++: Fix deserialization for std::normal_distribution [PR105502]Jonathan Wakely2-2/+36
This fixes a regression in std::normal_distribution deserialization that caused the object to be left unchanged if the __state_avail value read from the stream was false. libstdc++-v3/ChangeLog: PR libstdc++/105502 * include/bits/random.tcc (operator>>(basic_istream<C,T>&, normal_distribution<R>&)): Update state when __state_avail is false. * testsuite/26_numerics/random/normal_distribution/operators/serialize.cc: Check that deserialized object equals serialized one.
2022-05-06c++: add color to function decl printingJason Merrill4-7/+70
In reading C++ diagnostics, it's often hard to find the name of the function in the middle of the template header, return type, parameters, and template arguments. So let's colorize it, and maybe the template argument bindings while we're at it. I've somewhat arbitrarily chosen bold green for the function name, and non-bold magenta for the template arguments. A side-effect of this is that when this happens in a quote (i.e. %qD), the rest of the quote after the function name is no longer bold. I think that's acceptable; returning to the bold would require maintaining a colorize stack instead of the on/off controls we have now. gcc/cp/ChangeLog: * error.cc (decl_to_string): Add show_color parameter. (subst_to_string): Likewise. (cp_printer): Pass it. (type_to_string): Set pp_show_color. (dump_function_name): Use "fnname" color. (dump_template_bindings): Use "targs" color. (struct colorize_guard): New. (reinit_cxx_pp): Clear pp_show_color. gcc/ChangeLog: * diagnostic-color.cc: Add fnname and targs color entries. * doc/invoke.texi: Document them. gcc/testsuite/ChangeLog: * g++.dg/diagnostic/function-color1.C: New test.
2022-05-06vec: fix iterate commentJason Merrill1-2/+2
The comment for this overload, which copies the value out of the vector, was mostly describing the other overload, which stores a pointer into the vector. gcc/ChangeLog: * vec.h (vec::iterate): Fix comment.
2022-05-06c++: empty base constexpr adjustment [PR105245]Jason Merrill1-33/+34
While looking at PR105245 in stage 4, I wanted to reorganize the code a bit, but it seemed prudent to defer that to stage 1. PR c++/105245 PR c++/100111 gcc/cp/ChangeLog: * constexpr.cc (cxx_eval_store_expression): Reorganize empty base handling.
2022-05-06libstdc++: ppc: conditionalize vsx-only simd intrinsicsAlexandre Oliva1-3/+10
libstdc++'s bits/simd.h section for PowerPC, guarded by __ALTIVEC__, defines various intrinsic vector types that are only available with __VSX__: 64-bit long double, double, (un)signed long long, and 64-bit (un)signed long. experimental/simd/standard_abi_usable{,_2}.cc tests error out reporting the unmet requirements when the target cpu doesn't enable VSX. Make the reported instrinsic types conditional on __VSX__ so that <experimental/simd> can be used on PowerPC variants that do not support VSX. for libstdc++-v3/ChangeLog * include/experimental/bits/simd.h [__ALTIVEC__]: Require VSX for double, long long, and 64-bit long intrinsic types. [__ALTIVEC__] (__intrinsic_type): Mention 128-bit in preexisting long double diagnostic, adjust no-VSX double diagnostic to cover 64-bit long double as well.
2022-05-06compiler: error for duplicate bool map keysIan Lance Taylor2-1/+17
For golang/go#35945 Fixes golang/go#28104 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/403954
2022-05-06rs6000: Ignore fusion option flags for inlining test [PR102059]Michael Meissner2-0/+28
The -mpower8-fusion and -mpower10-fusion options do not modify which instructions we can generate, so ignore them when deciding whether we can inline callee into caller. 2022-05-06 Michael Meissner <meissner@linux.ibm.com> gcc/ PR target/102059 * config/rs6000/rs6000.cc (rs6000_can_inline_p): Ignore -mpower8-fusion and -mpower10-fusion options for inlining purposes. gcc/testsuite/ PR target/102059 * gcc.target/powerpc/pr102059-4.c: New test.
2022-05-06aarch64: remove useless GPF_TF_F16 iteratorChristophe Lyon1-3/+0
This iterator is not used anymore and is a leftover from previous cleanup (r10-5890-gabbe1ed2735517). 2022-04-28 Christophe Lyon <christophe.lyon@arm.com> gcc/ * config/aarch64/iterators.md (GPF_TF_F16): Delete.
2022-05-06OpenMP, libgomp: Add new runtime routine omp_target_is_accessible.Marcel Vollweiler9-1/+141
gcc/ChangeLog: * omp-low.cc (omp_runtime_api_call): Added target_is_accessible to omp_runtime_apis array. libgomp/ChangeLog: * libgomp.map: Added omp_target_is_accessible. * libgomp.texi: Tagged omp_target_is_accessible as supported. * omp.h.in: Added omp_target_is_accessible. * omp_lib.f90.in: Added interface for omp_target_is_accessible. * omp_lib.h.in: Likewise. * target.c (omp_target_is_accessible): Added implementation of omp_target_is_accessible. * testsuite/libgomp.c-c++-common/target-is-accessible-1.c: New test. * testsuite/libgomp.fortran/target-is-accessible-1.f90: New test.
2022-05-06libstdc++: Fix test that fails on Solaris [PR104731]Jonathan Wakely1-13/+22
On Solaris the dirent::d_name member is a single char, causing this test to fail with warnings about buffer overflow. Change the test to use a union with additional space for writing a string to the d_name member. libstdc++-v3/ChangeLog: PR libstdc++/104731 * testsuite/27_io/filesystem/iterators/error_reporting.cc: Use a trailing char array as storage for dirent::d_name.
2022-05-06libstdc++: Do not include <cxxabi.h> in <stacktrace>Jonathan Wakely1-1/+7
This avoids polluting the global namespace with the "abi" namespace alias. libstdc++-v3/ChangeLog: * include/std/stacktrace: Do not include <cxxabi.h>. (__cxa_demangle): Declare.
2022-05-06libstdc++: Do not use #include inside push visibility scope [PR99871]Jonathan Wakely7-37/+7
libstdc++-v3/ChangeLog: PR libstdc++/99871 * include/bits/specfun.h: Use visibility attribute on namespace, instead of pragma push/pop. * libsupc++/compare: Likewise. * libsupc++/exception: Likewise. * libsupc++/exception.h: Likewise. * libsupc++/exception_ptr.h: Likewise. * libsupc++/initializer_list: Likewise. * libsupc++/nested_exception.h: Likewise.
2022-05-06libstdc++: Update documentation about copyright and GPL notices in testsJonathan Wakely2-4/+12
There is no need to require FSF copyright for tests that are just "self-evident" ways to check the API and behaviour of the library. This is consistent with tests for the compiler, which do not have copyright and licence notices either. libstdc++-v3/ChangeLog: * doc/xml/manual/test.xml: Remove requirement for copyright and GPL notice in tests. * doc/html/manual/test.html: Regenerate.
2022-05-06Add a restriction on allocate clause (OpenMP 5.0)Hafiz Abid Qadeer5-8/+67
An allocate clause in target region must specify an allocator unless the compilation unit has requires construct with dynamic_allocators clause. Current implementation of the allocate clause did not check for this restriction. This patch fills that gap. gcc/ChangeLog: * omp-low.cc (omp_maybe_offloaded_ctx): New prototype. (scan_sharing_clauses): Check a restriction on allocate clause. gcc/testsuite/ChangeLog: * c-c++-common/gomp/allocate-2.c: Add tests. * c-c++-common/gomp/allocate-8.c: New test. * gfortran.dg/gomp/allocate-3.f90: Add tests. * gcc.dg/gomp/pr104517.c: Update.
2022-05-06Update gennews for GCC 12.Jakub Jelinek1-1/+2
2022-05-06 Jakub Jelinek <jakub@redhat.com> * gennews (files): Add files for GCC 12.
2022-05-06Daily bump.GCC Administrator10-1/+234
2022-05-05libgomp: Update docs to reflect Fortran support for non-rectangular loopsSandra Loosemore1-1/+1
libgomp/ * libgomp.texi (OpenMP 5.0): Feature is now fully supported.
2022-05-05c++: wrong error with MVP and pushdecl [PR64679]Marek Polacek5-5/+156
This patch fixes the second half of 64679. Here we issue a wrong "redefinition of 'int x'" for the following: struct Bar { Bar(int, int, int); }; int x = 1; Bar bar(int(x), int(x), int{x}); // #1 cp_parser_parameter_declaration_list does pushdecl every time it sees a named parameter, so the second "int(x)" causes the error. That's premature, since this turns out to be a constructor call after the third argument! If the first parameter is parenthesized, we can't push until we've established we're looking at a function declaration. Therefore this could be fixed by some kind of lookahead. I thought about introducing a lightweight variant of cp_parser_parameter_declaration_list that would not have any side effects and would return as soon as it figures out whether it's looking at a declaration or expression. Since that would require fairly nontrivial changes, I wanted something simpler. Something like delaying the pushdecl until we've reached the ')' following the parameter-declaration-clause. But we must push the parameters before processing a default argument, as in: Bar bar(int(a), int(b), int c = sizeof(a)); // valid Moreover, this code should still be accepted Bar f(int(i), decltype(i) j = 42); so this patch stashes parameters into a vector when parsing tentatively only when pushdecl-ing a parameter would result in a clash and an error about redefinition/redeclaration. The stashed parameters are pushed at the end of a parameter-declaration-clause if it's followed by a ')', so that we still diagnose redefining a parameter. PR c++/64679 gcc/cp/ChangeLog: * parser.cc (cp_parser_parameter_declaration_clause): Maintain a vector of parameters that haven't been pushed yet. Push them at the end of a valid parameter-declaration-clause. (cp_parser_parameter_declaration_list): Take a new auto_vec parameter. Do not pushdecl while parsing tentatively when pushdecl-ing a parameter would result in a hard error. (cp_parser_cache_defarg): Adjust the call to cp_parser_parameter_declaration_list. gcc/testsuite/ChangeLog: * g++.dg/parse/ambig11.C: New test. * g++.dg/parse/ambig12.C: New test. * g++.dg/parse/ambig13.C: New test. * g++.dg/parse/ambig14.C: New test.
2022-05-05libsanitizer: cherry-pick commit b226894d475b from upstreamH.J. Lu1-0/+4
cherry-pick: b226894d475b [sanitizer] [sanitizer] Correct GetTls for x32
2022-05-05libstdc++: Fixes for tests that fail with -fno-rttiJonathan Wakely55-63/+284
This disables a use of dynamic_cast that is not valid for -fno-rtti and adjusts some tests so they don't FAIL with -fno-rtti. Some tests are skipped completely, and others just make use of typeid conditional on the __cpp_rtti macro. A couple of tests were using typeid to verify typedefs denote the right type, which can be done at compile-time using templates instead. libstdc++-v3/ChangeLog: * include/experimental/memory_resource [!__cpp_rtti] (__resource_adaptor_imp::do_is_equal): Do not use dynamic_cast when RTTI is disabled. * testsuite/17_intro/freestanding.cc: Require RTTI. * testsuite/18_support/exception/38732.cc: Likewise. * testsuite/18_support/exception_ptr/rethrow_exception.cc: Likewise. * testsuite/18_support/nested_exception/68139.cc: Likewise. * testsuite/18_support/nested_exception/rethrow_if_nested.cc: Likewise. * testsuite/18_support/type_info/103240.cc: Likewise. * testsuite/18_support/type_info/fundamental.cc: Likewise. * testsuite/18_support/type_info/hash_code.cc: Likewise. * testsuite/20_util/any/assign/emplace.cc: Likewise. * testsuite/20_util/any/cons/in_place.cc: Likewise. * testsuite/20_util/any/misc/any_cast.cc: Likewise. * testsuite/20_util/any/observers/type.cc: Likewise. * testsuite/20_util/function/1.cc: Likewise. * testsuite/20_util/function/2.cc: Likewise. * testsuite/20_util/function/3.cc: Likewise. * testsuite/20_util/function/4.cc: Likewise. * testsuite/20_util/function/5.cc: Likewise. * testsuite/20_util/function/6.cc: Likewise. * testsuite/20_util/function/7.cc: Likewise. * testsuite/20_util/function/8.cc: Likewise. * testsuite/20_util/polymorphic_allocator/resource.cc: Likewise. * testsuite/20_util/shared_ptr/casts/1.cc: Likewise. * testsuite/20_util/shared_ptr/casts/rval.cc: Likewise. * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc: Likewise. * testsuite/20_util/shared_ptr/misc/get_deleter.cc: Likewise. * testsuite/20_util/typeindex/comparison_operators.cc: Likewise. * testsuite/20_util/typeindex/comparison_operators_c++20.cc: Likewise. * testsuite/20_util/typeindex/hash.cc: Likewise. * testsuite/20_util/typeindex/hash_code.cc: Likewise. * testsuite/20_util/typeindex/name.cc: Likewise. * testsuite/22_locale/ctype/is/string/89728_neg.cc: Likewise. * testsuite/22_locale/global_templates/standard_facet_hierarchies.cc: Likewise. * testsuite/22_locale/global_templates/user_facet_hierarchies.cc: Likewise. * testsuite/22_locale/locale/13630.cc: Check type without using RTTI. * testsuite/23_containers/array/requirements/non_default_constructible.cc: Require RTTI. * testsuite/27_io/basic_ostream/emit/1.cc: Likewise. * testsuite/27_io/fpos/14320-1.cc: Check type without using RTTI. * testsuite/27_io/fpos/mbstate_t/12065.cc: Require RTTI. * testsuite/27_io/ios_base/failure/dual_abi.cc: Likewise. * testsuite/experimental/any/misc/any_cast.cc: Likewise. * testsuite/experimental/any/observers/type.cc: Likewise. * testsuite/experimental/memory_resource/resource_adaptor.cc: Likewise. * testsuite/lib/libstdc++.exp (check_effective_target_rtti): Define new proc. * testsuite/tr1/3_function_objects/function/1.cc: Likewise. * testsuite/tr1/3_function_objects/function/2.cc: Likewise. * testsuite/tr1/3_function_objects/function/3.cc: Likewise. * testsuite/tr1/3_function_objects/function/4.cc: Likewise. * testsuite/tr1/3_function_objects/function/5.cc: Likewise. * testsuite/tr1/3_function_objects/function/6.cc: Likewise. * testsuite/tr1/3_function_objects/function/7.cc: Likewise. * testsuite/tr1/3_function_objects/function/8.cc: Likewise. * testsuite/tr2/bases/value.cc: Likewise. * testsuite/tr2/direct_bases/value.cc: Likewise. * testsuite/util/exception/safety.h [!__cpp_rtti]: Don't print types without RTTI.
2022-05-05[PATCH] i386: Cleanup -m32 usage in the testuite.Uros Bizjak4-6/+6
Use conditional compilation for ia32 target istead. 2022-05-05 Uroš Bizjak <ubizjak@gmail.com> gcc/testsuite/ChangeLog: * gcc.target/i386/pr103611-2.c (dg-do): Compile for target ia32. (dg-options): Remove -m32. * gcc.target/i386/pr105032.c (dg-do): Compile for taget ia32. (dg-additional-options): Remove. * gcc.target/i386/pr104732.c (dg-options): Remove -m32. * gcc.target/i386/pr99753.c (dg-options): Ditto.
2022-05-05Fortran: Add support for OMP non-rectangular loops.Sandra Loosemore10-25/+672
This patch adds support for OMP 5.1 "canonical loop nest form" to the Fortran front end, marks non-rectangular loops for processing by the middle end, and implements missing checks in the gimplifier for additional prohibitions on non-rectangular loops. Note that the OMP spec also prohibits non-rectangular loops with the TILE construct; that construct hasn't been implemented yet, so that error will need to be filled in later. gcc/fortran/ * gfortran.h (struct gfc_omp_clauses): Add non_rectangular bit. * openmp.cc (is_outer_iteration_variable): New function. (expr_is_invariant): New function. (bound_expr_is_canonical): New function. (resolve_omp_do): Replace existing non-rectangularity error with check for canonical form and setting non_rectangular bit. * trans-openmp.cc (gfc_trans_omp_do): Transfer non_rectangular flag to generated tree structure. gcc/ * gimplify.cc (gimplify_omp_for): Update messages for SCHEDULED and ORDERED clause conflict errors. Add check for GRAINSIZE and NUM_TASKS on TASKLOOP. gcc/testsuite/ * c-c++-common/gomp/loop-6.c (f3): New function to test TASKLOOP diagnostics. * gfortran.dg/gomp/collapse1.f90: Update expected messages. * gfortran.dg/gomp/pr85313.f90: Remove dg-error on non-rectangular loops that are now accepted. * gfortran.dg/gomp/non-rectangular-loop.f90: New file. * gfortran.dg/gomp/canonical-loop-1.f90: New file. * gfortran.dg/gomp/canonical-loop-2.f90: New file.
2022-05-05Regenerate gcc.potJoseph Myers1-4834/+4907
* gcc.pot: Regenerate.
2022-05-05Remove loop-incremented dead code.Martin Liska4-35/+13
gcc/ChangeLog: * genautomata.cc (create_composed_state): Remove dead code. * graphite-poly.cc (print_pdrs): Likewise. * lto-wrapper.cc (run_gcc): Likewise. * tree-switch-conversion.cc (switch_decision_tree::balance_case_nodes): Likewise.
2022-05-05profile: Unify identifier names for profilingMartin Liska1-8/+8
gcc/ChangeLog: * tree-profile.cc (gimple_gen_ic_profiler): Prefix names with PROF_*. (gimple_gen_time_profiler): Likewise.
2022-05-05Remove sanity checking in stream_out_histogram_value.Martin Liska1-12/+0
gcc/ChangeLog: * value-prof.cc (stream_out_histogram_value): Remove sanity checking.
2022-05-05tree-optimization/104162 - CSE of &MEM[ptr].a[i] and ptr + CSTRichard Biener3-2/+95
This adds the capability to value-numbering of treating complex address expressions where the offset becomes invariant as equal to a POINTER_PLUS_EXPR. This restores CSE that is now prevented by early lowering of &MEM[ptr + CST] to a POINTER_PLUS_EXPR. Unfortunately this regresses gcc.dg/asan/pr99673.c again, so the testcase is adjusted accordingly. 2022-01-26 Richard Biener <rguenther@suse.de> PR tree-optimization/104162 * tree-ssa-sccvn.cc (vn_reference_lookup): Handle &MEM[_1 + 5].a[i] like a POINTER_PLUS_EXPR if the offset becomes invariant. (vn_reference_insert): Likewise. * gcc.dg/tree-ssa/ssa-fre-99.c: New testcase. * gcc.dg/asan/pr99673.c: Adjust.
2022-05-05[Committed] PR testsuite/105486: Use "signed char" in gcc.dg/pr102950.cRoger Sayle1-2/+2
Although the automated regression testing scripts for powerpc64 appear to be somewhat garbled at the moment, they've correctly identified that my new test case for pr102950.c is failing on powerpc64, as char by default is unsigned on this target. This patch tweaks the new testcase by explicitly using "signed char" so that it's testing the intended EVRP behaviour portably. Committed as obvious. 2022-05-05 Roger Sayle <roger@nextmovesoftware.com> gcc/testsuite/ChangeLog PR testsuite/105486 * gcc.dg/pr102950.c: Use explicit "signed char" in test case.
2022-05-05libsanitizer: update LOCAL_PATCHES.Martin Liska1-2/+1
libsanitizer/ChangeLog: * LOCAL_PATCHES: Update.
2022-05-05libsanitizer: Apply local patchesMartin Liska14-30/+85
2022-05-05libsanitizer: merge from master (75f9e83ace52773af65dcebca543005ec8a2705d).Martin Liska18-93/+45
2022-05-05Embed real_value into REAL_CSTRichard Biener5-14/+5
The following removes the indirection to real_value from REAL_CST which doesn't seem to serve any useful purpose. Any sharing can be achieved by sharing the actual REAL_CST (which is what usually happens when copying trees) and sharing of real_value amongst different REAL_CST doesn't happen as far as I can see and would only lead to further issues like mismatching type and real_value. 2022-04-27 Richard Biener <rguenther@suse.de> * tree-core.h (tree_real_cst::real_cst_ptr): Remove pointer to real_value field. (tree_real_cst::value): Add real_value field. * tree.h (TREE_REAL_CST_PTR): Adjust. * tree.cc (build_real): Remove separate allocation. * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Likewise. gcc/cp/ * module.cc (trees_in::core_vals): Remove separate allocation for REAL_CST.
2022-05-05rewrite undefined overflow to defined in ifcombineRichard Biener1-0/+29
When we make stmts to execute unconditionally in ifcombine we have to make sure to rewrite stmts that can invoke undefined behavior on overflow into a form with defined overflow. That's possible for all but signed division for which we have to avoid the transform. 2022-04-04 Richard Biener <rguenther@suse.de> * tree-ssa-ifcombine.cc (bb_no_side_effects_p): Avoid executing divisions with undefined overflow unconditionally. (pass_tree_ifcombine::execute): Rewrite stmts with undefined overflow to defined.
2022-05-05testsuite/105486 - adjust testcase to avoid misaligned accessesRichard Biener1-0/+3
This properly aligns data, increasing test coverage. 2022-05-05 Richard Biener <rguenther@suse.de> PR testsuite/105486 * gcc.dg/vect/bb-slp-pr104240.c: Align all data.
2022-05-05tree-optimization/105484 - VEC_SET and EHRichard Biener2-7/+27
When the IL representation of VEC_SET is marked as throwing (unnecessarily), we need to clean that when replacing it with the .VEC_SET internal function call which cannot throw. 2022-05-05 Richard Biener <rguenther@suse.de> PR tree-optimization/105484 * gimple-isel.cc (gimple_expand_vec_set_expr): Clean EH, return whether the CFG changed. (gimple_expand_vec_exprs): When the CFG changed, clean it up. * gcc.dg/torture/pr105484.c: New testcase.
2022-05-05tree-optimization/104595 - vectorization of COND_EXPR with bool loadRichard Biener2-8/+32
The following fixes an omission in bool pattern detection that makes it fail when check_bool_pattern fails for COND_EXPR. That's not what it should do, instead it should still pattern recog to var != 0 even if no further adjustments to the def chain are necessary when var is not a mask already. 2022-02-21 Richard Biener <rguenther@suse.de> PR tree-optimization/104595 * tree-vect-patterns.cc (vect_recog_bool_pattern): For COND_EXPR do not fail if check_bool_pattern returns false. * gcc.dg/vect/pr104595.c: New testcase.
2022-05-05MAINTAINERS: Add myself as PowerPC port co-maintainerKewen Lin1-1/+3
Add myself as PowerPC port co-maintainer and to DCO section. ChangeLog: * MAINTAINERS: Add myself as PowerPC port co-maintainer and to DCO section.
2022-05-05Daily bump.GCC Administrator11-1/+227
2022-05-04libsanitizer: cherry-pick commit f52e365092aa from upstreamH.J. Lu1-2/+2
cherry-pick: f52e365092aa [sanitizer] Use newfstatat for x32
2022-05-04c++: alias CTAD refactoring [PR104470]Jason Merrill1-50/+54
In my previous PR104470 patch I added yet another place that needs to handle dependent member rewriting for deduction guides; this patches centralizes rewriting into maybe_dependent_member_ref. tsubst_baselink still has its own handling because that's simpler than teaching maybe_dependent_member_ref about BASELINKs. PR c++/104470 gcc/cp/ChangeLog: * pt.cc (maybe_dependent_member_ref): Handle types. (tsubst, tsubst_copy): Use it. (tsubst_aggr_type, instantiate_alias_template): Don't handle tf_dguide here.
2022-05-04c++: ICE during aggr CTAD for member tmpl [PR105476]Patrick Palka3-1/+34
Here we're crashing from maybe_aggr_guide ultimately because processing_template_decl isn't set when partially instantiating the guide's parameter list; this causes us to force completion of the dependent type Visitor_functior<Fn>, which of course fails and results in an unexpected error_mark_node (the instantation should always succeed). PR c++/105476 gcc/cp/ChangeLog: * pt.cc (maybe_aggr_guide): Set processing_template_decl when partially instantiating the guide's parameter list. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/class-deduction-aggr13.C: New test. * g++.dg/cpp2a/class-deduction-aggr13a.C: New test.
2022-05-04c-family: Tweak -Woverflow diagnosticMarek Polacek2-5/+25
When g++ emits warning: overflow in conversion from 'int' to 'char' changes value from '300' to '','' for code like "char c = 300;" it might raise a few eyebrows. With this warning we're not interested in the ASCII representation of the char, only the numerical value, so convert constants of type char to int. It looks like this conversion only needs to be done for char_type_node. gcc/c-family/ChangeLog: * c-warn.cc (warnings_for_convert_and_check): Convert constants of type char to int. gcc/testsuite/ChangeLog: * c-c++-common/Wconversion-1.c: New test.
2022-05-04c++: wrong parse with functors [PR64679]Marek Polacek2-1/+46
Consider struct F { F(int) {} F operator()(int) const { return *this; } }; and F(i)(0)(0); where we're supposed to first call the constructor and then invoke the operator() twice. However, we parse this as an init-declarator: "(i)" looks like a perfectly valid declarator, then we see an '(' and think it must be an initializer, so we commit and we're toast. My fix is to look a little bit farther before deciding we've seen an initializer. This is only a half of c++/64679, the other part of the PR is unrelated: there the problem is that we are calling pushdecl while parsing tentatively (in cp_parser_parameter_declaration_list), which is bad. PR c++/64679 gcc/cp/ChangeLog: * parser.cc (cp_parser_init_declarator): Properly handle a series of operator() calls, they are not part of an init-declarator. gcc/testsuite/ChangeLog: * g++.dg/parse/functor1.C: New test.
2022-05-04c++: optimize reshape_initJason Merrill1-1/+7
If the index of a constructor_elt is a FIELD_DECL, the CONSTRUCTOR is already reshaped, so we can save time and memory by returning immediately. gcc/cp/ChangeLog: * decl.cc (reshape_init): Shortcut already-reshaped init. (reshape_init_class): Assert not getting one here.
2022-05-04c++: use %D moreJason Merrill1-14/+15
There's no reason to call cxx_printable_name_translate here instead of using %D in the format string. gcc/cp/ChangeLog: * error.cc (cp_print_error_function): Use %qD. (function_category): Use %qD.