public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/103603] New: [11 Regression] stack overflow on ranger for huge program, but OK for legacy
@ 2021-12-07 13:18 kito at gcc dot gnu.org
  2021-12-07 13:32 ` [Bug tree-optimization/103603] " rguenth at gcc dot gnu.org
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: kito at gcc dot gnu.org @ 2021-12-07 13:18 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 103603
           Summary: [11 Regression] stack overflow on ranger for huge
                    program, but OK for legacy
           Product: gcc
           Version: 11.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: kito at gcc dot gnu.org
                CC: aldyh at gcc dot gnu.org
  Target Milestone: ---

ranger taking too deep recursive checking on program with lots of expression,
but fixed on trunk via pr103254, however the patch-set is not easy to backport
to GCC 11 since gimple-range-path.cc isn't exist at GCC 11.

Testcase:
```
#define STMT \
    t += 1; \
    t *= 2; \
    t -= 1; \
    t &= 0xfff00fff; \
    t ^= 0x14022; \
    t %= 0xffffff3; \
    t += 6; \
    t *= 10; \

#define STMT2 STMT STMT
#define STMT4 STMT2 STMT2
#define STMT8 STMT4 STMT4
#define STMT16 STMT8 STMT8
#define STMT32 STMT16 STMT16
#define STMT64 STMT32 STMT32
#define STMT128 STMT64 STMT64
#define STMT256 STMT128 STMT128


int foo(int init) {
  int t = init,i,iter;
  for(iter=0; iter < 2; ++iter) {
      STMT256 STMT256 STMT256
  }
  return t;
}
```

How to reproduce:
$ gcc-11 xred.c -O2 # OK with --param=evrp-mode=legacy
gcc-11: internal compiler error: Segmentation fault signal terminated program
cc1
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-11/README.Bugs> for instructions.

Backtrace:
Program received signal SIGSEGV, Segmentation fault.
0x000000000141550f in gimple_ranger::range_of_range_op(irange&, gimple*) ()
(gdb) bt
#0  0x000000000141550f in gimple_ranger::range_of_range_op(irange&, gimple*) ()
#1  0x0000000001417b9b in gimple_ranger::calc_stmt(irange&, gimple*,
tree_node*) ()
#2  0x0000000001418152 in gimple_ranger::range_of_stmt(irange&, gimple*,
tree_node*) ()
#3  0x0000000001413ce1 in gimple_ranger::range_of_expr(irange&, tree_node*,
gimple*) ()
#4  0x0000000001415604 in gimple_ranger::range_of_range_op(irange&, gimple*) ()
#5  0x0000000001417b9b in gimple_ranger::calc_stmt(irange&, gimple*,
tree_node*) ()
#6  0x0000000001418152 in gimple_ranger::range_of_stmt(irange&, gimple*,
tree_node*) ()
#7  0x0000000001413ce1 in gimple_ranger::range_of_expr(irange&, tree_node*,
gimple*) ()
#8  0x0000000001415604 in gimple_ranger::range_of_range_op(irange&, gimple*) ()
#9  0x0000000001417b9b in gimple_ranger::calc_stmt(irange&, gimple*,
tree_node*) ()

Note:
GCC 11 with--param=evrp-mode=legacy and GCC-12 (after
g:d1c1919ef8a18eea9d5c1741f8c9adaabf5571f2) are work without stack overflow
even more statement like that:
```
#define STMT \
    t += 1; \
    t *= 2; \
    t -= 1; \
    t &= 0xfff00fff; \
    t ^= 0x14022; \
    t %= 0xffffff3; \
    t += 6; \
    t *= 10; \

#define STMT2 STMT STMT
#define STMT4 STMT2 STMT2
#define STMT8 STMT4 STMT4
#define STMT16 STMT8 STMT8
#define STMT32 STMT16 STMT16
#define STMT64 STMT32 STMT32
#define STMT128 STMT64 STMT64
#define STMT256 STMT128 STMT128


int foo(int init) {
  int t = init,i,iter;
  for(iter=0; iter < 2; ++iter) {
      STMT256 STMT256 STMT256 STMT256 STMT256 STMT256 STMT256 STMT256 STMT256
STMT256 STMT256
  }
  return t;
}
```

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2022-01-15 14:14 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-07 13:18 [Bug tree-optimization/103603] New: [11 Regression] stack overflow on ranger for huge program, but OK for legacy kito at gcc dot gnu.org
2021-12-07 13:32 ` [Bug tree-optimization/103603] " rguenth at gcc dot gnu.org
2021-12-07 13:33 ` aldyh at gcc dot gnu.org
2021-12-07 13:40 ` marxin at gcc dot gnu.org
2021-12-07 14:03 ` kito at gcc dot gnu.org
2021-12-07 15:48 ` amacleod at redhat dot com
2021-12-08  0:28 ` kito at gcc dot gnu.org
2021-12-08  1:39 ` amacleod at redhat dot com
2021-12-08  7:52 ` pinskia at gcc dot gnu.org
2021-12-08  8:31 ` kito at gcc dot gnu.org
2022-01-11 14:07 ` cvs-commit at gcc dot gnu.org
2022-01-15 14:14 ` amacleod at redhat dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).