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

--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
It doesn't surprise me that creduce/cvise is uneasy about it, because that
testcase really can't be reduced.
You'd need to reduce by hand, e.g. to:
#define A(n) if (a[n]) a[n]++;
#define B(n) A(n##0) A(n##1) A(n##2) A(n##3) A(n##4) A(n##5) A(n##6) A(n##7)
A(n##8) A(n##9)
#define C(n) B(n##0) B(n##1) B(n##2) B(n##3) B(n##4) B(n##5) B(n##6) B(n##7)
B(n##8) B(n##9)
#define D(n) C(n##0) C(n##1) C(n##2) C(n##3) C(n##4) C(n##5) C(n##6) C(n##7)
C(n##8) C(n##9)
#define E(n) D(n##0) D(n##1) D(n##2) D(n##3) D(n##4) D(n##5) D(n##6) D(n##7)
D(n##8) D(n##9)

unsigned
foo (int n, int m, int *a)
{
  unsigned int b, c, d, e, f, g, h, i;
  b = a[m] ? a[m + 4] : a[m + 5];
  c = a[m + 1];
  d = a[m + 2];
  e = a[m + 3];
  f = c * b;
  g = d * b * b;
  h = e * b * b * b;
  i = f + g + h;
  E(1) E(2)
  b = a[m] ? a[m + 4] : a[m + 5];
  c = a[m + 1];
  d = a[m + 2];
  e = a[m + 3];
  f = c * b;
  g = d * b * b;
  h = e * b * b * b;
  return (f + g + h) * i;
}
which indeed ICEs with unfixed gcc on 32-bit hosts at -O2, as this testcase has
more than 40000 basic blocks and uses phi_rank/bb_rank of the bbs with negative
ranks.
during GIMPLE pass: reassoc
pr98557.c: In function ‘foo’:
pr98557.c:8:1: internal compiler error: in insert_operand_rank, at
tree-ssa-reassoc.c:367
    8 | foo (int n, int m, int *a)
      | ^~~
0x8380d90 insert_operand_rank
        ../../gcc/tree-ssa-reassoc.c:367
0x8380d90 insert_operand_rank
        ../../gcc/tree-ssa-reassoc.c:365
0x8d3ea02 get_rank
        ../../gcc/tree-ssa-reassoc.c:455
0x8d3eb14 get_rank
        ../../gcc/tree-ssa-reassoc.c:322
0x8d3eb14 propagate_rank
        ../../gcc/tree-ssa-reassoc.c:348
0x8d3eb14 get_rank
        ../../gcc/tree-ssa-reassoc.c:442
0x8d3eb14 get_rank
        ../../gcc/tree-ssa-reassoc.c:322
0x8d3eb14 propagate_rank
        ../../gcc/tree-ssa-reassoc.c:348
0x8d3eb14 get_rank
        ../../gcc/tree-ssa-reassoc.c:442
0x8d3eb14 get_rank
        ../../gcc/tree-ssa-reassoc.c:322
0x8d3eb14 propagate_rank
        ../../gcc/tree-ssa-reassoc.c:348
0x8d3eb14 get_rank
        ../../gcc/tree-ssa-reassoc.c:442
0x8d3ecb6 get_rank
        ../../gcc/vec.h:290
0x8d3ecb6 add_to_ops_vec
        ../../gcc/tree-ssa-reassoc.c:569
0x8d3f58e linearize_expr_tree
        ../../gcc/tree-ssa-reassoc.c:5711
0x8d3f443 linearize_expr_tree
        ../../gcc/tree-ssa-reassoc.c:5753
0x8d3f443 linearize_expr_tree
        ../../gcc/tree-ssa-reassoc.c:5753
0x8d45f2c reassociate_bb
        ../../gcc/tree-ssa-reassoc.c:6492
0x8d461f2 reassociate_bb
        ../../gcc/tree-ssa-reassoc.c:6656
0x8d484b5 do_reassoc
        ../../gcc/tree-ssa-reassoc.c:6768
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.

But I'm not sure the testcase is desirable for the testsuite, because it takes
to compile 105 seconds on a fast machine.

Reply via email to