- May 02, 2022
-
-
Richard Biener authored
This uses CASE_CONVERT more which eases eventual removal of NOP_EXPR. 2022-04-29 Richard Biener <rguenther@suse.de> gcc/cp/ * constexpr.cc (fold_simple_1): Use CASE_CONVERT. * cp-gimplify.cc (cp_fold): Likewise. * pt.cc (tsubst_copy): Likewise. gcc/ * dojump.cc (do_jump): Use CASE_CONVERT. * tree-ssa-dom.cc (edge_info::derive_equivalences): Likewise.
-
Jakub Jelinek authored
On Sun, May 01, 2022 at 07:06:53PM +0100, Jonathan Wakely wrote: > > >> the reason is that "gcc/analyzer/region-model.cc” uses initializer_lists, and it seems that <initializer_list> > > >> is not transitively included by any used headers for _LIBCPP_VERSION < 4000. I fixed that locally by > > >> adding initializer_list into system.h (and adding INCLUDE_INITIALIZER_LIST to the top of gcc/analyzer/region-model.cc) > > >> - with that change those versions do bootstrap and test OK*** > > > > > > From what I can see, with libstdc++ it works because <utility> which is > > > included by system.h includes <initializer_list>. > > > If I rename initializer_list in analyzer/region-model.ii to initializer_listx, I > > > also get: > > > ../../gcc/analyzer/region-model.cc: In function ‘void ana::selftest::test_binop_svalue_folding()’: > > > ../../gcc/analyzer/region-model.cc:4966:48: error: deducing from brace-enclosed initializer list requires ‘#include <initializer_list>’ > > > 4508 | > > > +++ |+#include <initializer_list> > > > 4509 | static void > > > ...... > > > 4966 | for (auto op : {BIT_IOR_EXPR, TRUTH_OR_EXPR}) > > > | ^ > > > ../../gcc/analyzer/region-model.cc:4978:49: error: deducing from brace-enclosed initializer list requires ‘#include <initializer_list>’ > > > 4978 | for (auto op : {BIT_AND_EXPR, TRUTH_AND_EXPR}) > > > | ^ > > > > > > I think we have 2 options, one is do what you wrote above, > > > INCLUDE_INITIALIZER_LIST defined before system.h to get #include <initializer_list>. > > > The other option is just to include that unconditionally, it is a very small > > > header. For libstdc++ it will make no difference as it is included anyway > > > and the header is really small there, libc++ includes <cstddef> which isn't > > > normally included and system.h includes <stddef.h> instead. > > > > I’d say unconditionally would be OK. I suppose the chance that any host > > C++ is good enough to build GCC as-is but fails to provide > > <initializer_list> is zero? > > > > Yes, definitely. > > > I’d be OK to do this change without a new RC even. 2022-05-02 Jakub Jelinek <jakub@redhat.com> * system.h: Include initializer_list.
-
Martin Liska authored
Mitigates the following clang warning: libgcc/libgcov-driver.c:416:1: warning: unused function 'dump_string' [-Wunused-function] libgcc/ChangeLog: * libgcov-driver.c: Add ATTRIBUTE_UNUSED.
-
GCC Administrator authored
-
- May 01, 2022
-
-
Segher Boessenkool authored
2022-05-01 Segher Boessenkool <segher@kernel.crashing.org> * config/rs6000/constraints.md (Y constraint): Fix comment.
-
Aldy Hernandez authored
We are ICEing in set_range_info_raw because value_range_kind cannot be VR_VARYING, since SSA_NAME_RANGE_TYPE can only hold VR_RANGE / VR_ANTI_RANGE. Most of the time setting a VR_VARYING as a global range makes no sense. However, we can have a range spanning the entire domain (VR_RANGE of [MIN,MAX] which is essentially a VR_VARYING), if the nonzero bits are set. This was working before because set_range_info_raw allows setting VR_RANGE of [MIN, MAX]. However, when going through an irange, we normalize this to a VR_VARYING, thus causing the ICE. It's interesting that other calls to set_range_info with an irange haven't triggered this. One solution would be to just ignore VR_VARYING and bail, since set_range_info* is really an update of the current range semantic wise. After all, we keep the nonzero bits which provide additional info. But this would be a change in behavior, so not suitable until after GCC 12 is released. So in order to keep with current behavior we can just denormalize the varying to VR_RANGE. Tested on x86-64 Linux. PR tree-optimization/105432 gcc/ChangeLog: * tree-ssanames.cc (set_range_info): Denormalize VR_VARYING to VR_RANGE before passing a piecewise range to set_range_info_raw.
-
GCC Administrator authored
-
- Apr 30, 2022
-
-
Patrick Palka authored
The function comment for adjust_field_tree_exp says this attribute is for handling expression trees whose operands may contain pointers to RTL instead of to trees. But ever since r0-59671-gac45df5dba5804, which fixed/removed the last two tree codes for which this was possible (WITH_CLEANUP_EXPR and GOTO_SUBROUTINE_EXPR), this special attribute is mostly a no-op. This patch removes it and instead just annotates struct tree_exp with the "length" attribute directly. Not sure it makes a difference, but I use %h instead of %0 in the attribute string to be consistent with the other uses of the "length" attribute within tree-core.h. This changes the code generated for TS_EXP handling in gt-cp-tree.h from: case TS_EXP: gt_ggc_m_9tree_node ((*x).generic.exp.typed.type); switch ((int) (TREE_CODE ((tree) &(*x)))) { default: { size_t i3; size_t l3 = (size_t)(TREE_OPERAND_LENGTH ((tree) &(*x))); for (i3 = 0; i3 != l3; i3++) { gt_ggc_m_9tree_node ((*x).generic.exp.operands[i3]); } } break; } break; to: case TS_EXP: { size_t l3 = (size_t)(TREE_OPERAND_LENGTH ((tree)&((*x).generic.exp))); gt_ggc_m_9tree_node ((*x).generic.exp.typed.type); { size_t i3; for (i3 = 0; i3 != l3; i3++) { gt_ggc_m_9tree_node ((*x).generic.exp.operands[i3]); } } } which seems equivalent and simpler. gcc/ChangeLog: * gengtype.cc (adjust_field_tree_exp): Remove. (adjust_field_type): Don't handle the "tree_exp" special attribute. * tree-core.h (struct tree_exp): Remove "special" and "desc" attributes. Add "length" attribute.
-
Jason Merrill authored
The problem here was that handle_mode_attribute clobbered the changes of any previous attribute, only copying type qualifiers to the new type. And common_handle_aligned_attribute had previously set up the typedef, so when we later called set_underlying_type it saw DECL_ORIGINAL_TYPE set and just returned, even though handle_mode_attribute had messed up the TREE_TYPE. So, let's fix handle_mode_attribute to copy attributes, alignment, and typedefness to the new type. PR c/100545 gcc/c-family/ChangeLog: * c-attribs.cc (handle_mode_attribute): Copy attributes, aligned, and typedef. * c-common.cc (set_underlying_type): Add assert. gcc/testsuite/ChangeLog: * c-c++-common/attr-mode-1.c: New test. * c-c++-common/attr-mode-2.c: New test.
-
GCC Administrator authored
-
- Apr 29, 2022
-
-
Jason Merrill authored
The the different calling of check_explicit_specialization for class and namespace scope friends bothered me, so this patch combines them. PR c++/91618 PR c++/96604 gcc/cp/ChangeLog: * friend.cc (do_friend): Call check_explicit_specialization here. * decl.cc (grokdeclarator): Not here. * decl2.cc (check_classfn): Or here.
-
Jason Merrill authored
In this testcase, we were trying to substitute into variant<Foo<T>>::__accepted_type, but failed to look it up because variant<Foo<T>> doesn't exist. In other cases we already rewrite such things into a dependent reference; we need to do that for alias templates as well. This caused some testsuite regressions on alias uses outside of deduction guides, so I've made all of this rewriting conditional on a new tf_dguide tsubst flag. PR c++/104470 gcc/cp/ChangeLog: * cp-tree.h (enum tsubst_flags): Add tf_dguide. * pt.cc (tsubst_aggr_type): Check it. (tsubst_baselink, tsubst_copy): Check it. (maybe_dependent_member_ref): Check it. (instantiate_alias_template): Handle it. (build_deduction_guide): Set it. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/explicit11.C: Second example also ill-formed. * g++.dg/cpp2a/class-deduction-alias12.C: New test.
-
Jason Merrill authored
The stage 4 patch limited direct propagation of dependent type to capture field/proxy to the "current instantiation", but many more types should be suitable as well. PR c++/82980 gcc/cp/ChangeLog: * lambda.cc (type_deducible_expression_p): Allow more types.
-
Jason Merrill authored
In r185768 I added the !FUNCTION_DECL check, but we might as well just check for variable; nothing else should take this path, and asserting as much doesn't regress anything. gcc/cp/ChangeLog: * decl.cc (cp_finish_decl): Only consider auto for vars.
-
Marek Polacek authored
[dcl.dcl]/5 says that enum { }; is ill-formed, and since r197742 we issue a pedwarn. However, the pedwarn also fires for enum { } x; which is well-formed. So only warn when {} is followed by a ;. This should be correct since you can't have "enum {}, <whatever>" -- that produces "expected unqualified-id before ',' token". PR c++/67048 gcc/cp/ChangeLog: * parser.cc (cp_parser_enum_specifier): Warn about empty unnamed enum only when it's followed by a semicolon. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/enum42.C: New test.
-
Jason Merrill authored
Normally we check for incomplete type in start_decl, but that obviously doesn't work for auto variables. Thanks to Pokechu22 for the analysis and testcases: "When cp_finish_decl calls cp_apply_type_quals_to_decl on a const auto or constexpr auto variable, the type might not be complete the first time (this happened when auto deduces to an initializer_list). cp_apply_type_quals_to_decl removes the const qualifier if the type is not complete, which is appropriate for grokdeclarator, on the assumption that the type will be complete when called by cp_finish_decl." PR c++/80351 gcc/cp/ChangeLog: * decl.cc (cp_finish_decl): Check completeness of deduced type. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/constexpr-77482.C: Adjust message. * g++.dg/cpp1y/auto-fn27.C: Likewise. * g++.dg/cpp1y/lambda-generic-variadic22.C: Likewise. * g++.dg/cpp1z/decomp54.C: Likewise. * g++.dg/cpp0x/initlist-const1.C: New test. * g++.dg/warn/Wunused-var-37.C: New test. * g++.dg/warn/Wunused-var-38.C: New test. * g++.dg/warn/Wunused-var-39.C: New test.
-
Thomas Koenig authored
gcc/fortran/ChangeLog: * gfortran.texi: Fix exchanged period and letter.
-
Martin Jambor authored
In the PR, the verifier complains that we did not manage to remove the body of a node and it is right. The node is kept for materialization of two clones but after one is materialized, the other one is removed as unneeded (as a part of delete_unreachable_blocks_update_callgraph). The problem is that the node removal does not check for this situation and can leave the clone_of node there with a body attached to it even though there is no use for it any more. This patch does checks for it and handles the situation in a simlar way that cgraph_node::materialize_clone does it, except that it also has to be careful that the removed node itself does not have any clones, which would still need the clone_of's body. Failing to do that results in a bootstrap failure. gcc/ChangeLog: 2022-04-27 Martin Jambor <mjambor@suse.cz> PR ipa/100413 * cgraph.cc (cgraph_node::remove): Release body of the node this is clone_of if appropriate. gcc/testsuite/ChangeLog: 2022-04-27 Martin Jambor <mjambor@suse.cz> PR ipa/100413 * g++.dg/ipa/pr100413.C: New test.
-
Andre Vieira authored
Add option that originally caused testcase to fail for aarch64. gcc/testsuite/ChangeLog: PR tree-optimization/105219 * gcc.dg/vect/pr105219.c: Add aarch64 target option.
-
Marek Polacek authored
This was fixed by r269078. PR c++/83596 gcc/testsuite/ChangeLog: * g++.dg/cpp1z/nontype5.C: New test.
-
Jonathan Wakely authored
The --with-long-double-abi=ibm build is missing some exports that are present in the --with-long-double-abi=ieee build. Those symbols never should have been exported at all, but now that they have been, they should be exported consistently by both ibm and ieee. This simply defines them as aliases for equivalent symbols that are already present. The abi-tag on num_get::_M_extract_int isn't really needed, because it only uses a std::string as a local variable, not in the return type or function parameters, so it's safe to define the _M_extract_int[abi:cxx11] symbols as aliases for the corresponding function without the abi-tag. This causes some new symbols to be added to the GLIBCXX_3.4.29 version for the ibm long double build mode, but there is no advantage to adding them to 3.4.30 for that build. That would just create more inconsistencies. libstdc++-v3/ChangeLog: PR libstdc++/105417 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Regenerate. * src/c++11/compatibility-ldbl-alt128.cc [_GLIBCXX_USE_DUAL_ABI]: Define __gnu_ieee128::num_get<C>::_M_extract_int[abi:cxx11]<I> symbols as aliases for corresponding symbols without abi-tag.
-
Marek Polacek authored
This was finally fixed for GCC 11 by r11-434. PR c++/78244 gcc/testsuite/ChangeLog: * g++.dg/cpp0x/Wnarrowing20.C: New test.
-
Marek Polacek authored
This was fixed by r12-6329-g4f6bc28fc7dd86. PR c++/71424 gcc/testsuite/ChangeLog: * g++.dg/cpp0x/initlist-array15.C: New test.
-
Jason Merrill authored
The decl pretty-printing code wasn't looking at the flags parameter, so we were printing 'using' in the middle of an expression. PR c++/102987 gcc/cp/ChangeLog: * error.cc (dump_decl) [USING_DECL]: Respect flags. gcc/testsuite/ChangeLog: * g++.dg/diagnostic/using1.C: Check pretty-printing.
-
Jason Merrill authored
An alias can't be declared with a qualified-id in actual code, but in diagnostics we want to know which scope it belongs to, and I think a nested-name-specifier is the best way to provide that. gcc/cp/ChangeLog: * error.cc (dump_decl): Check TFF_UNQUALIFIED_NAME. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/alias-decl-1.C: Expect qualified name.
-
Jakub Jelinek authored
As mentioned in the PR, for C++98 we have diagnostics that expect >> terminating template arguments to be a mistake for > > (C++11 said it has to be treated that way), while if user trying to spare the spacebar doesn't separate > from following = or >> from following =, the diagnostics is confusing, while clang suggests adding space in between. The following patch does that for >= and >>= too. For some strange reason the error recovery emits further errors, not really sure what's going on because I overwrite the token->type like the code does for the C++11 >> case or for the C++98 >> cases, but at least the first error is nicer (well, for the C++98 nested template case and >>= I need to overwrite it to > and so the = is lost, so perhaps some follow-up errors are needed for that case). 2022-04-29 Jakub Jelinek <jakub@redhat.com> PR c++/104319 * parser.cc (cp_parser_template_argument): Treat >= like C++98 >> after a type id by setting maybe_type_id and aborting tentative parse. (cp_parser_enclosed_template_argument_list): Handle CPP_GREATER_EQ like misspelled CPP_GREATER CPP_RQ and CPP_RSHIFT_EQ like misspelled CPP_GREATER CPP_GREATER_EQ or CPP_RSHIFT CPP_EQ or CPP_GREATER CPP_GREATER CPP_EQ. (cp_parser_next_token_ends_template_argument_p): Return true also for CPP_GREATER_EQ and CPP_RSHIFT_EQ. * g++.dg/parse/template28.C: Adjust expected diagnostics. * g++.dg/parse/template30.C: New test.
-
Rainer Orth authored
The following patch updates the Solaris baselines for GCC 12.1. Tested on i386-pc-solaris2.11 and sparc-sun-solaris2.11 (Solaris 11.3 and 11.4 in each case). The only (expected) difference between the 11.3 and 11.4 versions is --- baseline_symbols.txt.s113s 2022-04-28 10:37:11.464068450 +0000 +++ baseline_symbols.txt.s114s 2022-04-27 16:54:31.995636805 +0000 @@ -4070,3 +4070,3 @@ -FUNC:_ZSt10from_charsPKcS0_RdSt12chars_format@@GLIBCXX_3.4.30 -FUNC:_ZSt10from_charsPKcS0_ReSt12chars_format@@GLIBCXX_3.4.30 -FUNC:_ZSt10from_charsPKcS0_RfSt12chars_format@@GLIBCXX_3.4.30 +FUNC:_ZSt10from_charsPKcS0_RdSt12chars_format@@GLIBCXX_3.4.29 +FUNC:_ZSt10from_charsPKcS0_ReSt12chars_format@@GLIBCXX_3.4.29 +FUNC:_ZSt10from_charsPKcS0_RfSt12chars_format@@GLIBCXX_3.4.29 which is handled by the fix for PR libstdc++/103407. I'm using the 11.4 version here. 2022-04-27 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> libstdc++-v3: * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate. * config/abi/post/i386-solaris/amd64/baseline_symbols.txt: Likewise. * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise. * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt: Likewise.
-
Uros Bizjak authored
Introduce peephole2 pattern to convert from: mov %esi, %edx negl %eax adcl $0, %edx negl %edx to: xorl %edx, %edx negl %eax sbbl %esi, %edx This conversion is profitable only when initial move is found. Otherwise, additional move to a temporary together with clearing xor is needed. 2022-04-29 Uroš Bizjak <ubizjak@gmail.com> gcc/ChangeLog: PR target/51954 * config/i386/i386.md (adcl/neg -> sbb peephole): New peephole2. gcc/testsuite/ChangeLog: PR target/51954 * gcc.target/i386/pr51954.c: New test.
-
Richard Biener authored
The following fixes wrongly used is_gimple_condexpr and makes canonicalize_cond_expr_cond honor either, delaying final checking to callers where all but two in ifcombine are doing the correct thing already. This fixes bugs but is now mainly in preparation for making COND_EXPRs in GIMPLE assignments no longer have a GENERIC expression as condition operand like we already transitioned VEC_COND_EXPR earlier. 2022-04-11 Richard Biener <rguenther@suse.de> * gimple-expr.cc (is_gimple_condexpr): Adjust comment. (canonicalize_cond_expr_cond): Move here from gimple.cc, allow both COND_EXPR and GIMPLE_COND forms. * gimple-expr.h (canonicalize_cond_expr_cond): Declare. * gimple.cc (canonicalize_cond_expr_cond): Remove here. * gimple.h (canonicalize_cond_expr_cond): Likewise. * gimple-loop-versioning.cc (loop_versioning::version_loop): Use is_gimple_condexpr_for_cond. * tree-parloops.cc (gen_parallel_loop): Likewise. * tree-ssa-ifcombine.cc (ifcombine_ifandif): Check for a proper cond expr after canonicalize_cond_expr_cond. Use is_gimple_condexpr_for_cond where appropriate. * tree-ssa-loop-manip.cc (determine_exit_conditions): Likewise. * tree-vect-loop-manip.cc (slpeel_add_loop_guard): Likewise.
-
Richard Biener authored
The following adds gsi_after_labels for gimple_seq so I do not have to open-code it. I took the liberty to remove the two #defines wrapping gsi_start_1 and gsi_last_1 as we now have C++ references. 2022-02-01 Richard Biener <rguenther@suse.de> * gimple-iterator.h (gsi_after_labels): Add overload for gimple_seq. (gsi_start_1): Rename to gsi_start and take a reference. (gsi_last_1): Likewise. * gimple-iterator.cc (gsi_for_stmt): Use gsi_start. * omp-low.cc (lower_rec_input_clauses): Likewise. (lower_omp_scan): Likewise.
-
Richard Biener authored
This avoids undefined signed overflow when calling powi_as_mults_1. 2022-04-29 Richard Biener <rguenther@suse.de> PR tree-optimization/105431 * tree-ssa-math-opts.cc (powi_as_mults_1): Make n unsigned. (powi_as_mults): Use absu_hwi. (gimple_expand_builtin_powi): Remove now pointless n != -n check.
-
Aldy Hernandez authored
In preparation for the agnostication of ranger, this patch moves common code that can be shared between non-integer ranges (initially pointers) into the relevant header files. This is a relatively non-invasive change, as any changes that would need to be ported to GCC 12, would occur in the range-op entries themselves, not in the supporting glue which I'm moving. Tested and benchmarked on x86-64 Linux. gcc/ChangeLog: * range-op.cc (empty_range_varying): Move to range-op.h. (range_true): Move to range.h. (range_false): Same. (range_true_and_false): Same. (enum bool_range_state): Move to range-op.h. (relop_early_resolve): Same. (operator_equal::op1_op2_relation): Abstract code to... (equal_op1_op2_relation): ...here. (operator_not_equal::op1_op2_relation): Abstract code to... (not_equal_op1_op2_relation): ...here. (operator_lt::op1_op2_relation): Abstract code to... (lt_op1_op2_relation): ...here. (operator_le::op1_op2_relation): Abstract code to... (le_op1_op2_relation): ...here. (operator_gt::op1_op2_relation): Abstract code to... (gt_op1_op2_relation): ...here. (operator_ge::op1_op2_relation): Abstract code to... (ge_op1_op2_relation): ...here. (class range_op_table): Move to range-op.h. * range-op.h (equal_op1_op2_relation): Moved from range-op.cc. (not_equal_op1_op2_relation): Same. (lt_op1_op2_relation): Same. (le_op1_op2_relation): Same. (gt_op1_op2_relation): Same. (ge_op1_op2_relation): Same. (enum bool_range_state): Same. (get_bool_state): Same. (empty_range_varying): Same. (relop_early_resolve): Same. (class range_op_table): Same. * range.h (range_true): Same. (range_false): Same. (range_true_and_false): Same.
-
Aldy Hernandez authored
This patch cleans up some irange methods in preparation for other cleanups later in the cycle. First, we prefer the reference overloads for union and intersect as the pointer versions have been deprecated for a couple releases. Also, I've renamed the legacy union/intersect whose only function was to provide additional verbosity for VRP into legacy_verbose_{union,intersect}. This is a temporary rename to serve as a visual reminder of which of the methods are bound for the chopping block when the legacy code gets removed later this cycle. Tested on x86-64 Linux. gcc/ChangeLog: * gimple-fold.cc (size_must_be_zero_p): Use reference instead of pointer * gimple-ssa-evrp-analyze.cc (evrp_range_analyzer::record_ranges_from_incoming_edge): Rename intersect to legacy_verbose_intersect. * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Use reference instead of pointer. * tree-ssa-dom.cc (dom_jt_simplifier::simplify): Use value_range instead of value_range_equiv. * tree-vrp.cc (extract_range_from_plus_minus_expr): Use reference instead of pointer. (find_case_label_range): Same. * value-range-equiv.cc (value_range_equiv::intersect): Rename to... (value_range_equiv::legacy_verbose_intersect): ...this. (value_range_equiv::union_): Rename to... (value_range_equiv::legacy_verbose_union_): ...this. * value-range-equiv.h (class value_range_equiv): Rename union and intersect to legacy_verbose_{intersect,union}. * value-range.cc (irange::union_): Rename to... (irange::legacy_verbose_union_): ...this. (irange::intersect): Rename to... (irange::legacy_verbose_intersect): ...this. * value-range.h (irange::union_): Rename union_ to legacy_verbose_union. (irange::intersect): Rename intersect to legacy_verbose_intersect. * vr-values.cc (vr_values::update_value_range): Same. (vr_values::extract_range_for_var_from_comparison_expr): Same. (vr_values::extract_range_from_cond_expr): Rename union_ to legacy_verbose_union. (vr_values::extract_range_from_phi_node): Same.
-
Aldy Hernandez authored
This patch consolidates the multiple ways we have of storing global ranges into one accepting a range. In an upcoming patch series later this cycle we will be providing a way to store iranges globally, as opposed to the mechanism we have now which squishes wider ranges into value_range's. This is preparation for such work. Tested and benchmarked on x86-64 Linux. gcc/ChangeLog: * gimple-ssa-evrp-analyze.cc (evrp_range_analyzer::set_ssa_range_info): Use *range_info methods that take a range. * gimple-ssa-sprintf.cc (try_substitute_return_value): Same. * ipa-prop.cc (ipcp_update_vr): Same. * tree-inline.cc (remap_ssa_name): Same. * tree-ssa-copy.cc (fini_copy_prop): Same. * tree-ssa-math-opts.cc (optimize_spaceship): Same. * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Same. * tree-ssa-pre.cc (insert_into_preds_of_block): Same. * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt): Same. * tree-ssa-strlen.cc (set_strlen_range): Same. (strlen_pass::handle_builtin_string_cmp): Same. * tree-ssanames.cc (set_range_info): Make static. (duplicate_ssa_name_range_info): Make static and add a new variant calling the static. * tree-ssanames.h (set_range_info): Remove version taking wide ints. (duplicate_ssa_name_range_info): Remove version taking a range_info_def and replace with a version taking SSA names. * tree-vect-loop-manip.cc (vect_gen_vector_loop_niters): Use *range_info methods that take a range. (vect_do_peeling): Same. * tree-vrp.cc (vrp_asserts::remove_range_assertions): Same. * vr-values.cc (simplify_truth_ops_using_ranges): Same.
-
Aldy Hernandez authored
Small clean up to use set_undefined instead of duplicating the functionality therein. Tested on x86-64 Linux. gcc/ChangeLog: * value-range.h (irange::irange): Use set_undefined.
-
Aldy Hernandez authored
This method should have been private, and somehow seeped into the API. Tested and benchmarked on x86-64 Linux. gcc/ChangeLog: * gimple-range-cache.h (non_null_ref::adjust_range): Do not use irange::intersect (wide_int, wide_int). * gimple-range-fold.cc (adjust_pointer_diff_expr): Same. (adjust_imagpart_expr): Same. * value-range.h (irange::intersect (wide_int, wide_int)): Make private.
-
Richard Biener authored
The PR points out dead code after previous refactoring. 2022-02-01 Richard Biener <rguenther@suse.de> PR tree-optimization/104322 * tree-vect-loop.cc (vectorizable_reduction): Remove dead code.
-
Iain Sandoe authored
The changes to fix PR 105287 included a tightening of the constraints on which variables are promoted to frame copies. This has exposed that we are failing to name some variables that should be promoted. We avoid the use of DECL_UID to build anonymous symbols since that might not be stable for -fcompare-debug. The long-term fix is to address the cases where the naming has been missed, but for the short-term (and for the GCC-12 branch) backing out the additional constraint is proposed. Signed-off-by:
Iain Sandoe <iain@sandoe.co.uk> PR c++/105426 gcc/cp/ChangeLog: * coroutines.cc (register_local_var_uses): Allow promotion of unnamed temporaries to coroutine frame copies.
-
Richard Biener authored
We are eventually ICEing in decimal_to_decnumber on non-decimal REAL_VALUE_TYPE that creep in from uses of build_real (..., dconst*) for DFP types. The following extends the decimal_to_decnumber special-casing of dconst* to build_real, avoiding the bogus REAL_CSTs from creeping into the IL and modified to ones not handled by the decimal_to_decnumber special casing. It also makes sure to ICE for not handled dconst* values at the point we build the REAL_CST. 2022-04-27 Richard Biener <rguenther@suse.de> PR middle-end/105376 * tree.cc (build_real): Special case dconst* arguments for decimal floating point types. * gcc.dg/pr105376.c: New testcase.
-
Martin Liska authored
gcc/ada/ChangeLog: * gnatvsn.ads: Bump Library_Version to 13.
-