https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107109
Bug ID: 107109 Summary: ICE on valid code at -O1 on x86_64-linux-gnu: in type, at value-range.h:621 Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: zhendong.su at inf dot ethz.ch Target Milestone: --- It appears to be a recent regression. Compiler Explorer: https://godbolt.org/z/891T9sGeP [505] % gcctk -v Using built-in specs. COLLECT_GCC=gcctk COLLECT_LTO_WRAPPER=/local/suz-local/software/local/gcc-trunk/libexec/gcc/x86_64-pc-linux-gnu/13.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../gcc-trunk/configure --disable-bootstrap --enable-checking=yes --prefix=/local/suz-local/software/local/gcc-trunk --enable-sanitizers --enable-languages=c,c++ --disable-werror --enable-multilib --with-system-zlib Thread model: posix Supported LTO compression algorithms: zlib gcc version 13.0.0 20221001 (experimental) [master r13-3010-g2555071c954] (GCC) [506] % [506] % gcctk -O1 small.c during GIMPLE pass: dom small.c: In function ācā: small.c:3:6: internal compiler error: in type, at value-range.h:621 3 | void c() { | ^ 0x85da64 irange::type() const ../../gcc-trunk/gcc/value-range.h:621 0x85e6e1 irange::type() const ../../gcc-trunk/gcc/tree.h:3634 0x85e6e1 adjust_op1_for_overflow ../../gcc-trunk/gcc/range-op.cc:1373 0x1de41b6 operator_plus::op1_range(irange&, tree_node*, irange const&, irange const&, relation_kind_t) const ../../gcc-trunk/gcc/range-op.cc:1414 0x1de41b6 operator_plus::op1_range(irange&, tree_node*, irange const&, irange const&, relation_kind_t) const ../../gcc-trunk/gcc/range-op.cc:1400 0x1ce84f5 gori_compute::compute_operand1_range(vrange&, gimple_range_op_handler&, vrange const&, tree_node*, fur_source&, value_relation*) ../../gcc-trunk/gcc/gimple-range-gori.cc:1086 0x1ce7b6d gori_compute::compute_operand_range(vrange&, gimple*, vrange const&, tree_node*, fur_source&, value_relation*) ../../gcc-trunk/gcc/gimple-range-gori.cc:692 0x1ce856f gori_compute::compute_operand1_range(vrange&, gimple_range_op_handler&, vrange const&, tree_node*, fur_source&, value_relation*) ../../gcc-trunk/gcc/gimple-range-gori.cc:1140 0x1ce7b6d gori_compute::compute_operand_range(vrange&, gimple*, vrange const&, tree_node*, fur_source&, value_relation*) ../../gcc-trunk/gcc/gimple-range-gori.cc:692 0x1ceaf68 gori_compute::outgoing_edge_range_p(vrange&, edge_def*, tree_node*, range_query&) ../../gcc-trunk/gcc/gimple-range-gori.cc:1358 0x1cdb605 ranger_cache::range_from_dom(vrange&, tree_node*, basic_block_def*, ranger_cache::rfd_mode) ../../gcc-trunk/gcc/gimple-range-cache.cc:1494 0x1cdb991 ranger_cache::range_from_dom(vrange&, tree_node*, basic_block_def*, ranger_cache::rfd_mode) ../../gcc-trunk/gcc/gimple-range-cache.cc:1398 0x1cdb991 ranger_cache::entry_range(vrange&, tree_node*, basic_block_def*, ranger_cache::rfd_mode) ../../gcc-trunk/gcc/gimple-range-cache.cc:928 0x1cdb991 ranger_cache::entry_range(vrange&, tree_node*, basic_block_def*, ranger_cache::rfd_mode) ../../gcc-trunk/gcc/gimple-range-cache.cc:916 0x1cdba48 ranger_cache::edge_range(vrange&, edge_def*, tree_node*, ranger_cache::rfd_mode) ../../gcc-trunk/gcc/gimple-range-cache.cc:959 0x1cdb005 ranger_cache::resolve_dom(vrange&, tree_node*, basic_block_def*) ../../gcc-trunk/gcc/gimple-range-cache.cc:1384 0x1cdb660 ranger_cache::range_from_dom(vrange&, tree_node*, basic_block_def*, ranger_cache::rfd_mode) ../../gcc-trunk/gcc/gimple-range-cache.cc:1488 0x1cdd392 ranger_cache::range_from_dom(vrange&, tree_node*, basic_block_def*, ranger_cache::rfd_mode) ../../gcc-trunk/gcc/gimple-range-cache.cc:1398 0x1cdd392 ranger_cache::fill_block_cache(tree_node*, basic_block_def*, basic_block_def*) ../../gcc-trunk/gcc/gimple-range-cache.cc:1212 0x1cddfd4 ranger_cache::block_range(vrange&, basic_block_def*, tree_node*, bool) ../../gcc-trunk/gcc/gimple-range-cache.cc:1039 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. [507] % [507] % cat small.c int printf(const char *, ...); int a, b; void c() { int d, e; L: a = (b && a) ^ 2756578370; d = ~a + (e ^ d) ^ 2756578370; if (!d) printf("%d", a); d = a / e; goto L; } int main() { if (a) c(); return 0; }