https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102561
Bug ID: 102561 Summary: [12 Regression] ICE Segmentation fault during GIMPLE pass: evrp (on -O2 and above) Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: haoxintu at gmail dot com Target Milestone: --- Hi all. It appears to be a quite recent regression issue. $cat small.c int a, b, c; d() { (a = 2) ^ c << a || (c ^= b); } $gcc -w -O2 small.c during GIMPLE pass: evrp small.c: In function ādā: small.c:2:1: internal compiler error: Segmentation fault 2 | d() { (a = 2) ^ c << a || (c ^= b); } | ^ 0xc162af crash_signal ../../gcc/toplev.c:331 0x9d6a9f irange::tree_upper_bound(unsigned int) const ../../gcc/value-range.h:240 0x9d6a9f irange::upper_bound(unsigned int) const ../../gcc/value-range.h:522 0x9d6a9f irange::upper_bound(unsigned int) const ../../gcc/value-range.h:516 0x9d6a9f irange::upper_bound() const ../../gcc/value-range.h:532 0x180c493 operator_lshift::op1_range(irange&, tree_node*, irange const&, irange const&, tree_code) const ../../gcc/range-op.cc:2131 0x171da1b gori_compute::compute_operand1_range(irange&, gimple*, irange const&, tree_node*, fur_source&) ../../gcc/gimple-range-gori.cc:1011 0x171da95 gori_compute::compute_operand_range(irange&, gimple*, irange const&, tree_node*, fur_source&) ../../gcc/gimple-range-gori.cc:689 0x171da95 gori_compute::compute_operand1_range(irange&, gimple*, irange const&, tree_node*, fur_source&) ../../gcc/gimple-range-gori.cc:1064 0x171e932 gori_compute::compute_operand_range(irange&, gimple*, irange const&, tree_node*, fur_source&) ../../gcc/gimple-range-gori.cc:689 0x171e932 gori_compute::outgoing_edge_range_p(irange&, edge_def*, tree_node*, range_query&) ../../gcc/gimple-range-gori.cc:1245 0x17133a3 ranger_cache::range_on_edge(irange&, edge_def*, tree_node*) ../../gcc/gimple-range-cache.cc:979 0x1713a78 ranger_cache::range_on_edge(irange&, edge_def*, tree_node*) ../../gcc/gimple-range-fold.h:97 0x1713a78 ranger_cache::propagate_cache(tree_node*) ../../gcc/gimple-range-cache.cc:1078 0x1714241 ranger_cache::fill_block_cache(tree_node*, basic_block_def*, basic_block_def*) ../../gcc/gimple-range-cache.cc:1290 0x1714405 ranger_cache::block_range(irange&, basic_block_def*, tree_node*, bool) ../../gcc/gimple-range-cache.cc:1022 0x17107a4 gimple_ranger::range_on_entry(irange&, basic_block_def*, tree_node*) ../../gcc/gimple-range.cc:131 0x1710df7 gimple_ranger::range_of_expr(irange&, tree_node*, gimple*) ../../gcc/gimple-range.cc:105 0x1718ba4 fold_using_range::range_of_range_op(irange&, gimple*, fur_source&) ../../gcc/gimple-range-fold.cc:604 0x171ad96 fold_using_range::fold_stmt(irange&, gimple*, fur_source&, tree_node*) ../../gcc/gimple-range-fold.cc:556 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. $gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/home/haoxin/haoxin-data/compilers/gcc/build/libexec/gcc/x86_64-pc-linux-gnu/12.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../configure --prefix=/home/haoxin/haoxin-data/compilers/gcc/build/ --enable-bootstrap --enable-checking=release --enable-languages=c,c++ --enable-multilib Thread model: posix Supported LTO compression algorithms: zlib gcc version 12.0.0 20211002 (experimental) (GCC) Thanks, Haoxin