https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126845

            Bug ID: 126845
           Summary: ICE on valid code at -O{2,3} with
                    -fno-move-loop-stores on x86_64-linux-gnu: in
                    create_relation_in_bb, at value-relation.cc:1217
           Product: gcc
           Version: 16.0
            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: ---

Compiler Explorer: https://godbolt.org/z/ojz35T9qY

Note:
- fails: trunk
- works: 16.2 and earlier


[647] % gcctk -v
Using built-in specs.
COLLECT_GCC=gcctk
COLLECT_LTO_WRAPPER=/local/home/suz/suz-local/software/local/gcc-trunk/bin/../libexec/gcc/x86_64-pc-linux-gnu/17.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++,lto --disable-werror
--disable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 17.0.0 20260813 (experimental) [master r17-1628-gd1c12591336] (GCC)
[648] %
[648] % gcctk -O2 -fno-move-loop-stores -c small.c
during GIMPLE pass: vect
small.c: In function ā€˜j’:
small.c:3:6: internal compiler error: in create_relation_in_bb, at
value-relation.cc:1217
    3 | void j() {
      |      ^
0x27cea3b internal_error(char const*, ...)
        ../../gcc-trunk/gcc/diagnostic-global-context.cc:787
0xa2d9ed fancy_abort(char const*, int, char const*)
        ../../gcc-trunk/gcc/diagnostics/context.cc:1813
0x93c266 dom_oracle::create_relation_in_bb(basic_block_def*, relation_kind_t,
tree_node*, tree_node*)
        ../../gcc-trunk/gcc/value-relation.cc:1217
0x15f6d1c dom_oracle::register_transitives(basic_block_def*, value_relation
const&)
        ../../gcc-trunk/gcc/value-relation.cc:1367
0x15f6f06 dom_oracle::register_transitives(basic_block_def*, value_relation
const&)
        ../../gcc-trunk/gcc/value-relation.cc:1287
0x15f6f06 dom_oracle::record(basic_block_def*, relation_kind_t, tree_node*,
tree_node*)
        ../../gcc-trunk/gcc/value-relation.cc:1182
0x15f6f06 dom_oracle::record(basic_block_def*, relation_kind_t, tree_node*,
tree_node*)
        ../../gcc-trunk/gcc/value-relation.cc:1162
0x15f3450 relation_oracle::record(gimple*, relation_kind_t, tree_node*,
tree_node*)
        ../../gcc-trunk/gcc/value-relation.cc:1118
0xe2e812 fur_depend::register_relation(gimple*, relation_kind_t, tree_node*,
tree_node*)
        ../../gcc-trunk/gcc/gimple-range-fold.cc:181
0xe353b4 fold_using_range::range_of_range_op(vrange&, gimple_range_op_handler&,
fur_source&)
        ../../gcc-trunk/gcc/gimple-range-fold.cc:861
0xe36532 fold_using_range::fold_stmt(vrange&, gimple*, fur_source&, tree_node*)
        ../../gcc-trunk/gcc/gimple-range-fold.cc:698
0xe20a54 gimple_ranger::fold_range_internal(vrange&, gimple*, tree_node*)
        ../../gcc-trunk/gcc/gimple-range.cc:303
0xe20a54 gimple_ranger::prefill_stmt_dependencies(tree_node*)
        ../../gcc-trunk/gcc/gimple-range.cc:494
0xe212ca gimple_ranger::range_of_stmt(vrange&, gimple*, tree_node*)
        ../../gcc-trunk/gcc/gimple-range.cc:363
0xe24403 gimple_ranger::range_of_stmt(vrange&, gimple*, tree_node*)
        ../../gcc-trunk/gcc/gimple-range.cc:315
0xe24403 gimple_ranger::range_of_expr(vrange&, tree_node*, gimple*)
        ../../gcc-trunk/gcc/gimple-range.cc:124
0x26adfff vect_get_range_info(tree_node*, generic_wide_int<wide_int_storage>*,
generic_wide_int<wide_int_storage>*)
        ../../gcc-trunk/gcc/tree-vect-patterns.cc:73
0x26b53c6 vect_determine_precisions_from_range
        ../../gcc-trunk/gcc/tree-vect-patterns.cc:6965
0x26b6545 vect_determine_stmt_precisions(vec_info*, _stmt_vec_info*)
        ../../gcc-trunk/gcc/tree-vect-patterns.cc:7384
0x26b6992 vect_determine_precisions(vec_info*)
        ../../gcc-trunk/gcc/tree-vect-patterns.cc:7439
/local/home/suz/suz-local/software/local/gcc-trunk/bin/../libexec/gcc/x86_64-pc-linux-gnu/17.0.0/cc1
-quiet -I /usr/local/include -I /local/suz-local/software/local/include
-imultiarch x86_64-linux-gnu -iprefix
/local/home/suz/suz-local/software/local/gcc-trunk/bin/../lib/gcc/x86_64-pc-linux-gnu/17.0.0/
small.c -quiet -dumpbase small.c -dumpbase-ext .c -mtune=generic -march=x86-64
-O2 -fno-move-loop-stores -o /tmp/ccTFTRng.s
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.
[649] %
[649] % cat small.c
int a, c, d, e, **f, *g, h;
static int i() {}
void j() {
  do {
    f = &g;
    c = 1 + (1 >> a);
    if (2 + c >= c - a)
      goto k;
    g = &c;
  } while (i());
  c = a + c + c;
k:
  e = **f;
  for (int b = 0; b < 3; b++)
    h = d = d ^ e;
}

Reply via email to