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

            Bug ID: 101249
           Summary: ICE: Segmentation fault with "-O3 -fno-tree-ch
                    -fno-tree-dce -fno-tree-dominator-opts -fno-tree-dse
                    -fno-strict-aliasing -fwrapv"
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: suochenyao at 163 dot com
  Target Milestone: ---

*******************************************************************************
OS and Platform:
CentOS Linux release 7.8.2003 (Core), x86_64 GNU/Linux
*******************************************************************************
Program:
unsigned a[];
char b=0, c=0;
int d=0;
void e() {
  int f, g;
  for (; b; b++) {
    c = 0;
    for (; c <= 8; c++) {
      int *h = &f;
      *h |= a[c];
      g = *h = a[c];
    }
    d = g;
  }
}
int main() {}
*******************************************************************************
gcc version:
$ gcc -v
Using built-in specs.
COLLECT_GCC=/data/bin/gcc-dev/bin/gcc
COLLECT_LTO_WRAPPER=/data/bin/gcc-dev/libexec/gcc/x86_64-pc-linux-gnu/12.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../configure --prefix=/data/bin/gcc-dev --disable-multilib
--enable-languages=c,c++
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 12.0.0 20210628 (experimental) (GCC)

git version: 7c6b354b92b38f31cd2399fbdbc9d6f837881480
*******************************************************************************
Command Lines:
$ gcc -O3 -fno-tree-ch -fno-tree-dce -fno-tree-dominator-opts -fno-tree-dse
-fno-strict-aliasing -fwrapv a.c
a.c:1:10: warning: array ā€˜a’ assumed to have one element
    1 | unsigned a[];
      |          ^
a.c: In function ā€˜e’:
a.c:10:14: warning: iteration 1 invokes undefined behavior
[-Waggressive-loop-optimizations]
   10 |       *h |= a[c];
      |             ~^~~
a.c:8:14: note: within this loop
    8 |     for (; c <= 8; c++) {
      |            ~~^~~~
during GIMPLE pass: slp
a.c:4:6: internal compiler error: Segmentation fault
    4 | void e() {
      |      ^
0xe3a99f crash_signal
        ../../gcc/toplev.c:328
0x10e1b47 vec<_stmt_vec_info*, va_heap, vl_ptr>::iterate(unsigned int,
_stmt_vec_info**) const
        ../../gcc/vec.h:1697
0x10e1b47 vect_optimize_slp(vec_info*)
        ../../gcc/tree-vect-slp.c:3992
0x10e9c5c vect_optimize_slp(vec_info*)
        ../../gcc/vec.h:1448
0x10e9c5c vect_slp_analyze_bb_1
        ../../gcc/tree-vect-slp.c:5621
0x10e9c5c vect_slp_region
        ../../gcc/tree-vect-slp.c:5708
0x10eb2c8 vect_slp_bbs
        ../../gcc/tree-vect-slp.c:5858
0x10eb6c4 vect_slp_function(function*)
        ../../gcc/tree-vect-slp.c:5944
0x10f1712 execute
        ../../gcc/tree-vectorizer.c:1445
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.

Reply via email to