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

--- Comment #6 from Vsevolod Livinskiy <vsevolod.livinskij at frtk dot ru> ---
Thank you for such a quick fix!

Sorry about duplicates, I saw different assert messages and thought that they
were different bugs.

I still can see ICE in hoist_memory_references (bug 95283) on trunk. I've
attached the reproducer below.

Please let me know if it is a different bug, and I'll create another bug
report.

Error:
>$ g++ -c -O3 func.cpp
during GIMPLE pass: lim
func.cpp: In function ‘void test()’:
func.cpp:5:6: internal compiler error: in hoist_memory_references, at
tree-ssa-loop-im.c:2615
    5 | void test() {
      |      ^~~~
0x82318c hoist_memory_references
        gcc_src/gcc/tree-ssa-loop-im.c:2615
0x82318c store_motion_loop
        gcc_src/gcc/tree-ssa-loop-im.c:2912
0x123853a do_store_motion
        gcc_src/gcc/tree-ssa-loop-im.c:2937
0x123853a tree_ssa_lim
        gcc_src/gcc/tree-ssa-loop-im.c:3156
0x123853a execute
        gcc_src/gcc/tree-ssa-loop-im.c:3206

Reproducer:
extern short var_15, var_20;
extern int var_18, var_21, var_23;
extern bool arr_2[];
extern long arr_3[];
void test() {
  var_20 = 1;
  for (int a = 0; a < 12; a += 2)
    for (short b = 0; b < 8; b += 2) {
      arr_2[b] = var_21 = var_18 ? var_15 : 0;
      arr_3[b] = 8569;
    }
  var_23 = -1096835496;
}

GCC version:
11.0.0 (adad99eb906164af7d2b398ad7e430aebe3adeb4)

Reply via email to