aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
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-05Merge branch 'master' into devel/modula-2.Gaius Mulley286-6207/+8922
2022-05-05PR-105409 Bugfix add CC1_SPEC to the cc1/cc1plus invocation.Gaius Mulley1-1/+1
Introducing patch devised by Rainer Orth <ro@CeBiTec.Uni-Bielefeld.de>. The lack of CC1_SPEC options to cc1plus can cause an ICE. gcc/m2/ChangeLog: * m2-link-support.h (GM2CC): Add CC1_SPEC to the cc1/cc1plus invocation. Signed-off-by: Gaius Mulley <gaius.mulley@southwales.ac.uk>
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.
2022-05-04libgomp/plugin/plugin-gcn.c: Use -foffload-options= in err msgTobias Burnus1-1/+1
While -foffload=-<flag> works (never documented legacy feature), the documented way is to use -foffload-options=. libgomp/ChangeLog: * plugin/plugin-gcn.c (isa_matches_agent): Suggest -foffload-options.
2022-05-04Update cpplib es.poJoseph Myers1-62/+51
* es.po: Update.
2022-05-04OpenMP: Fix use_device_{addr,ptr} with in-data-sharing argTobias Burnus2-9/+152
For array-descriptor vars, the descriptor is assigned to a temporary. However, this failed when the clause's argument was in turn in a data-sharing clause as the outer context's VALUE_EXPR wasn't used. gcc/ChangeLog: * omp-low.cc (lower_omp_target): Fix use_device_{addr,ptr} with list item that is in an outer data-sharing clause. libgomp/ChangeLog: * testsuite/libgomp.fortran/use_device_addr-5.f90: New test.
2022-05-04c++: parse error with >= in template argument list [PR105436]Marek Polacek2-1/+4
This patch fixes an oversight whereby we treated >= as the end of a template argument. This causes problems in C++14, because in cp_parser_template_argument we go different ways for C++14 and C++17: /* It must be a non-type argument. In C++17 any constant-expression is allowed. */ if (cxx_dialect > cxx14) goto general_expr; so in this testcase in C++14 we get "N" as the template argument but in C++17 it is the whole "N >= 5" expression. So in C++14 the remaining ">= 5" triggered the newly-added diagnostic. PR c++/105436 gcc/cp/ChangeLog: * parser.cc (cp_parser_next_token_ends_template_argument_p): Don't return true for CPP_GREATER_EQ. gcc/testsuite/ChangeLog: * g++.dg/parse/template31.C: New test.
2022-05-04libstdc++: Add always_inline to the simplest std::array accessors [PR104719]Jonathan Wakely1-4/+4
libstdc++-v3/ChangeLog: PR libstdc++/104719 * include/std/array (array::size(), array::max_size()) (array::empty(), array::data()): Add always_inline attribute.
2022-05-04libstdc++: Simplify std::array accessors [PR104719]Jonathan Wakely2-48/+38
This removes the __array_traits::_S_ref and __array_traits::_S_ptr accessors, which only exist to make the special case of std::array<T, 0> syntactically well-formed. By changing the empty type used as the std::array<T, 0>::_M_elems data member to support operator[] and conversion to a pointer, we can write code using the natural syntax. The indirection through _S_ref and _S_ptr is removed for the common case, and a function call is only used for the special case of zero-size arrays. The invalid member access for zero-sized arrays is changed to use __builtin_trap() instead of a null dereference. This guarantees a runtime error if it ever gets called, instead of undefined behaviour that is likely to get optimized out as unreachable. libstdc++-v3/ChangeLog: PR libstdc++/104719 * include/std/array (__array_traits::_S_ref): Remove. (__array_traits::_S_ptr): Remove. (__array_traits<T, 0>::_Type): Define operator[] and operator T* to provide an array-like API. (array::_AT_Type): Remove public typeef. (array::operator[], array::at, array::front, array::back): Use index operator to access _M_elems instead of _S_ref. (array::data): Use implicit conversion from _M_elems to pointer. (swap(array&, array&)): Use __enable_if_t helper. (get<I>): Use index operator to access _M_elems. * testsuite/23_containers/array/tuple_interface/get_neg.cc: Adjust dg-error line numbers.
2022-05-04PR-105410 Bugfix implement save-temps across every temporary file.Gaius Mulley2-6/+11
2022-05-04 Gaius Mulley <gaius.mulley@southwales.ac.uk> gcc/m2/ChangeLog: * m2/m2-link-support.h (RM_IF_NOSAVETEMP) New macro. (GM2CC) Use RM_IF_NOSAVETEMP on the assembler intermediate file. (GM2LCC) Use RM_IF_NOSAVETEMP when creating an archive of the application. (GEN_SCAFFOLD_SRC) Use RM_IF_NOSAVETEMP when creating the scaffold source program. (M2LINK) Use RM_IF_NOSAVETEMP when creating the assembler source name and use RM_IF_NOSAVETEMP when creating the main program object. Signed-off-by: Gaius Mulley <gaius.mulley@southwales.ac.uk>
2022-05-04c++: Remove cdtor_labelJason Merrill5-53/+12
Jakub pointed out that cdtor_label is unnecessary, we should get all the desired semantics with a normal return. gcc/cp/ChangeLog: * cp-tree.h (struct language_function): Remove x_cdtor_label. (cdtor_label, LABEL_DECL_CDTOR): Remove. * constexpr.cc (returns): Don't check LABEL_DECL_CDTOR. (cxx_eval_constant_expression): Don't call returns. * decl.cc (check_goto): Don't check cdtor_label. (start_preparsed_function): And don't set it. (finish_constructor_body, finish_destructor_body): Remove. (finish_function_body): Don't call them. * typeck.cc (check_return_expr): Handle cdtor_returns_this here. * semantics.cc (finish_return_stmt): Not here.
2022-05-04tree-optimization/104658 - avoid mixing mask & non-mask vector defsRichard Biener3-2/+125
When pattern recognition fails to sanitize all defs of a mask producing operation and the respective def is external or constant we end up trying to produce a VECTOR_BOOLEAN_TYPE_P constructor which in turn ends up exposing stmts like <signed-boolean:1> _135 = _49 ? -1 : 0; which isn't handled well in followup SLP and generates awful code. We do rely heavily on pattern recognition to sanitize mask vs. data uses of bools but that fails here which means we also should fail vectorization. That avoids ICEing because of such stmts and it also avoids generating weird code which makes the vectorization not profitable. The following patch simply disallows external VECTOR_BOOLEAN_TYPE_P defs and arranges the promote to external code to instead promote mask uses to extern (that's just a short-cut here). I've also looked at aarch64 and with SVE and a fixed vector length for the gcc.target/i386/pr101636.c testcase. I see similar vectorization (using <signed-boolean:4>) there but it's hard to decide whether the old, the new or no vectorization is better for this. The code generated with traditional integer masks isn't as awkward but we still get the != 0 promotion done for each scalar element which doesn't look like intended - this operation should be visible upfront. That also means some cases will now become a missed optimization that needs to be fixed by bool pattern recognition. But that can possibly be delayed to GCC 13. 2022-02-22 Richard Biener <rguenther@suse.de> PR tree-optimization/104658 * tree-vect-slp.cc (vect_slp_convert_to_external): Do not create VECTOR_BOOLEAN_TYPE_P extern defs. Reset the vector type on nodes we promote. (vectorizable_bb_reduc_epilogue): Deal with externalized root. * tree-vect-stmts.cc (vect_maybe_update_slp_op_vectype): Do not allow VECTOR_BOOLEAN_TYPE_P extern defs. * gcc.target/i386/pr104658.c: New testcase.
2022-05-04tree-optimization/103116 - SLP permutes and peeling for gapsRichard Biener3-0/+140
The testcase shows that we can end up with a contiguous access across loop iterations but by means of permutations the elements accessed might only cover parts of a vector. In this case we end up with GROUP_GAP == 0 but still need to avoid accessing excess elements in the last loop iterations. Peeling for gaps is designed to cover this but a single scalar iteration might not cover all of the excess elements. The following ensures peeling for gaps is done in this situation and when that isn't sufficient because we need to peel more than one iteration (gcc.dg/vect/pr103116-2.c), fail the SLP vectorization. 2022-05-04 Richard Biener <rguenther@suse.de> PR tree-optimization/103116 * tree-vect-stmts.cc (get_group_load_store_type): Handle the case we need peeling for gaps even though GROUP_GAP is zero. * gcc.dg/vect/pr103116-1.c: New testcase. * gcc.dg/vect/pr103116-2.c: Likewise.
2022-05-04Remove dead code.Martin Liska2-12/+11
gcc/ChangeLog: * gengtype-state.cc (read_a_state_token): Remove dead code. * ipa-profile.cc (ipa_profile_read_summary_section): Likewise.
2022-05-04Fold more vector constants earlyRichard Biener1-17/+16
In PR105049 we had return VIEW_CONVERT_EXPR<U>( VEC_PERM_EXPR < {<<< Unknown tree: compound_literal_expr V D.1984 = { 0 }; >>>, { 0 }} , {<<< Unknown tree: compound_literal_expr V D.1985 = { 0 }; >>>, { 0 }} , { 0, 0 } > & {(short int) SAVE_EXPR <c>, (short int) SAVE_EXPR <c>}); where we gimplify the init CTORs to _1 = {{ 0 }, { 0 }}; _2 = {{ 0 }, { 0 }}; instead of to vector constants. The following makes sure to simplify the CTORs to VECTOR_CSTs during gimplification by re-ordering the simplification to after CTOR flag recomputation and gimplification of the elements. 2022-03-25 Richard Biener <rguenther@suse.de> * gimplify.cc (gimplify_init_constructor): First gimplify, then simplify the result to a VECTOR_CST.
2022-05-04genconditions: Add support for targets without non-trivial insn conditionsJakub Jelinek1-2/+2
Somebody complained on IRC that when writing a new backend one can get an error while compiling build/gencondmd.cc. The problem is that when host compiler is g++ 3 or later (or when bootstrapping), we compile it with g++ -std=c++11 -pedantic and the generated insn_conditions array contains pairs { "cond", __builtin_constant_p (cond) ? (int) (cond) : -1 }, where cond is some non-trivial instruction condition. Now if a target uses "" for all the conditions (admittedly unlikely for non-trivial target), the initializer for insn_conditions[] is {} and that is pedantically rejected because C++ doesn't support zero-sized arrays. The following patch fixes that by adding an artificial termination element and skips that during the walk. 2022-05-04 Jakub Jelinek <jakub@redhat.com> * genconditions.cc (write_conditions): Append a { nullptr, -1 } element at the end of insn_conditions. (write_writer): Use ARRAY_SIZE (insn_conditions) - 1 instead of ARRAY_SIZE (insn_conditions).
2022-05-04libsanitizer: update test that mixes fake and real stackMartin Liska1-0/+1
gcc/testsuite/ChangeLog: * c-c++-common/asan/alloca_loop_unpoisoning.c: Do not combine fake and real stack.
2022-05-04libsanitizer: Update Makefile.am files.Martin Liska12-25/+20
libsanitizer/ChangeLog: * tsan/Makefile.am: Update Makefile.am files. * hwasan/Makefile.am: Likewise. * sanitizer_common/Makefile.am: Likewise. * Makefile.in: Re-generate. * asan/Makefile.in: Likewise. * hwasan/Makefile.in: Likewise. * interception/Makefile.in: Likewise. * libbacktrace/Makefile.in: Likewise. * lsan/Makefile.in: Likewise. * sanitizer_common/Makefile.in: Likewise. * tsan/Makefile.in: Likewise. * ubsan/Makefile.in: Likewise.
2022-05-04libsanitizer: Apply local patchesH.J. Lu14-30/+85
2022-05-04libsanitizer: merge from upstream (0a1bcab9f3bf75c4c5d3e53bafb3eeb80320af46).Martin Liska182-5387/+6955
2022-05-04arm: Restrict support of vectors of boolean immediates (PR target/104662)Christophe Lyon1-0/+3
This simple patch avoids the ICE described in the PR: internal compiler error: in simd_valid_immediate, at config/arm/arm.cc:12866 with an early exit from simd_valid_immediate if we are trying to handle a vector of booleans and MVE is not enabled. We still get an ICE when compiling the existing gcc.dg/rtl/arm/mve-vxbi.c without -march=armv8.1-m.main+mve: error: unrecognizable insn: (insn 7 5 8 2 (set (reg:V4BI 114) (const_vector:V4BI [ (const_int 1 [0x1]) (const_int 0 [0]) repeated x2 (const_int 1 [0x1]) ])) -1 (nil)) during RTL pass: ira but there's little we can do since the testcase explicitly creates vectors of booleans which do need MVE. That is the reason why I do not add a testcase. 2022-04-19 Christophe Lyon <christophe.lyon@arm.com> PR target/104662 * config/arm/arm.cc (simd_valid_immediate): Exit when input is a vector of booleans and MVE is not enabled.
2022-05-04c++: Don't emit deprecated warnings or unavailable errors on lambda declarationsJakub Jelinek3-3/+65
On the following testcase, we emit deprecated warnings or unavailable errors even on merge declarations of those lambdas (the dg-bogus directives), while IMHO we should emit them only when something actually calls those lambdas. The following patch temporarily disables that diagnostics during maybe_add_lambda_conv_op. PR2173R1 also says that ambiguity between attribute-specifier-seq at the end of requires-clause and attribute-specifier-seq from lambda-expression should be resolved to attribute-specifier-seq for the latter. Do we need to do anything about that? I mean, can a valid requires-clause end with an attribute-specifier-seq? Say operator int [[]] is valid primary expression, but requires operator int [[]] isn't valid, nor is requires operator int, no? 2022-05-04 Jakub Jelinek <jakub@redhat.com> * lambda.cc: Include decl.h. (maybe_add_lambda_conv_op): Temporarily override deprecated_state to UNAVAILABLE_DEPRECATED_SUPPRESS. * g++.dg/cpp23/lambda-attr1.C: New test. * g++.dg/cpp23/lambda-attr2.C: New test.
2022-05-04hwasan: support new dg-output format.Martin Liska5-5/+5
Supports change in libsanitizer where it newly reports: READ of size 4 at 0xffffffffc3d4 tags: 02/01(00) (ptr/mem) in thread T0 So the 'tags' contains now 3 entries compared to 2 entries. gcc/testsuite/ChangeLog: * c-c++-common/hwasan/alloca-outside-caught.c: Update dg-output. * c-c++-common/hwasan/heap-overflow.c: Likewise. * c-c++-common/hwasan/hwasan-thread-access-parent.c: Likewise. * c-c++-common/hwasan/large-aligned-1.c: Likewise. * c-c++-common/hwasan/stack-tagging-basic-1.c: Likewise.
2022-05-04debug/105158 - improve debug stmt retaining for forwarder removalRichard Biener1-5/+26
Currently when we cannot move debug stmt from a forwarder to the destination block we drop/reset them. But in some cases as for the testcase we can move them to the predecessor when that has a single successor and we can insert after the last stmt of the block. That allows us to preserve debug info here. 2022-04-05 Richard Biener <rguenther@suse.de> PR debug/105158 * tree-cfgcleanup.cc (move_debug_stmts_from_forwarder): Move debug stmts to the predecessor if moving to the destination is not possible. (remove_forwarder_block): Adjust. (remove_forwarder_block_with_phi): Likewise.
2022-05-04LTO plugin: modernize a bit.Martin Liska2-43/+44
include/ChangeLog: * plugin-api.h (enum ld_plugin_tag): Do not set implicit enum values. lto-plugin/ChangeLog: * lto-plugin.c (struct plugin_objfile): Use bool for offset field. (exec_lto_wrapper): Assign true/false to bool variables. (process_offload_section): Likewise. (claim_file_handler): Likewise. (onload): Likewise.