Hi Andrew > On 13 May 2022, at 14:58, Andrew MacLeod via Gcc-patches > <gcc-patches@gcc.gnu.org> wrote: > > VRP currently searches the ssa_name list for globals to exported after it > finishes running. This change simply exports globals as they are calculated > for the final time during the DOM walk. > > This avoid the occasional awkwardness of determined what ssa-names in the > list are important, as well as allowing forthcoming side-effect code to > adjust what is currently known as a global value during the walk without > affecting the values exported for the entire function. > > Bootstrapped on x86_64-pc-linux-gnu with no regressions. Pushed.
This (r13-436-gaf34279921f4) appears to cause or expose a problem which breaks bootstrap with in-tree MPFR on at least x86_64-linux/darwin. thanks Iain during GIMPLE pass: threadfull ../../../src/mpfr/src/sin_cos.c: In function ‘mpfr_sin_cos’: ../../../src/mpfr/src/sin_cos.c:29:1: internal compiler error: in type, at value-range.h:225 29 | mpfr_sin_cos (mpfr_ptr y, mpfr_ptr z, mpfr_srcptr x, mpfr_rnd_t rnd_mode) | ^~~~~~~~~~~~ 0x107d316 irange::type() const ../../src/gcc/value-range.h:225 0x2a0052d operator_minus::lhs_op1_relation(irange const&, irange const&, irange const&, relation_kind_t) const ../../src/gcc/range-op.cc:1349 0x28a4a6a fold_using_range::range_of_range_op(irange&, gimple*, fur_source&) ../../src/gcc/gimple-range-fold.cc:643 0x28a43e4 fold_using_range::fold_stmt(irange&, gimple*, fur_source&, tree_node*) ../../src/gcc/gimple-range-fold.cc:555 0x28a380f fold_range(irange&, gimple*, edge_def*, range_query*) ../../src/gcc/gimple-range-fold.cc:326 0x28accb3 gori_compute::outgoing_edge_range_p(irange&, edge_def*, tree_node*, range_query&) ../../src/gcc/gimple-range-gori.cc:1298 0x289e775 ranger_cache::range_from_dom(irange&, tree_node*, basic_block_def*, ranger_cache::rfd_mode) ../../src/gcc/gimple-range-cache.cc:1511 0x289dc50 ranger_cache::fill_block_cache(tree_node*, basic_block_def*, basic_block_def*) ../../src/gcc/gimple-range-cache.cc:1311 0x289d2a6 ranger_cache::block_range(irange&, basic_block_def*, tree_node*, bool) ../../src/gcc/gimple-range-cache.cc:1139 0x289830a gimple_ranger::range_on_entry(irange&, basic_block_def*, tree_node*) ../../src/gcc/gimple-range.cc:154 0x289817e gimple_ranger::range_of_expr(irange&, tree_node*, gimple*) ../../src/gcc/gimple-range.cc:128 0x165d10f path_range_query::range_on_path_entry(irange&, tree_node*) ../../src/gcc/gimple-range-path.cc:162 0x165d327 path_range_query::internal_range_of_expr(irange&, tree_node*, gimple*) ../../src/gcc/gimple-range-path.cc:203 0x165d435 path_range_query::range_of_expr(irange&, tree_node*, gimple*) ../../src/gcc/gimple-range-path.cc:225 0x28a30b9 fur_stmt::get_operand(irange&, tree_node*) ../../src/gcc/gimple-range-fold.cc:157 0x28abca9 gori_compute::compute_operand1_range(irange&, gimple*, irange const&, tree_node*, fur_source&) ../../src/gcc/gimple-range-gori.cc:1023 0x28ab121 gori_compute::compute_operand_range(irange&, gimple*, irange const&, tree_node*, fur_source&) ../../src/gcc/gimple-range-gori.cc:760 0x28ac05d gori_compute::compute_operand1_range(irange&, gimple*, irange const&, tree_node*, fur_source&) ../../src/gcc/gimple-range-gori.cc:1077 0x28ab121 gori_compute::compute_operand_range(irange&, gimple*, irange const&, tree_node*, fur_source&) ../../src/gcc/gimple-range-gori.cc:760 0x28aca70 gori_compute::outgoing_edge_range_p(irange&, edge_def*, tree_node*, range_query&) ../../src/gcc/gimple-range-gori.cc:1271