https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83774
Bug ID: 83774 Summary: ICE at -O3 with -Wall: Segmentation fault Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: su at cs dot ucdavis.edu Target Milestone: --- This appears to be a very recent regression. $ gcctk -v Using built-in specs. COLLECT_GCC=gcctk COLLECT_LTO_WRAPPER=/home/su/software/tmp/gcc/gcc-trunk/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../gcc-source-trunk/configure --enable-languages=c,c++,lto --prefix=/home/su/software/tmp/gcc/gcc-trunk --disable-bootstrap Thread model: posix gcc version 8.0.0 20180110 (experimental) [trunk revision 256427] (GCC) $ $ gcctk -O3 small.c $ $ gcctk -O3 -Wall small.c during GIMPLE pass: uninit small.c: In function ‘main’: small.c:6:5: internal compiler error: Segmentation fault int main () ^~~~ 0xc95c5f crash_signal ../../gcc-source-trunk/gcc/toplev.c:325 0xee3825 gimple_code ../../gcc-source-trunk/gcc/gimple.h:1677 0xee3825 is_gimple_call ../../gcc-source-trunk/gcc/gimple.h:2788 0xee3825 convert_control_dep_chain_into_preds ../../gcc-source-trunk/gcc/tree-ssa-uninit.c:676 0xeeb454 convert_control_dep_chain_into_preds ../../gcc-source-trunk/gcc/vec.h:826 0xeeb454 find_predicates ../../gcc-source-trunk/gcc/tree-ssa-uninit.c:797 0xeeb454 is_use_properly_guarded ../../gcc-source-trunk/gcc/tree-ssa-uninit.c:2444 0xeec848 find_uninit_use ../../gcc-source-trunk/gcc/tree-ssa-uninit.c:2531 0xeec848 warn_uninitialized_phi ../../gcc-source-trunk/gcc/tree-ssa-uninit.c:2601 0xeec848 execute ../../gcc-source-trunk/gcc/tree-ssa-uninit.c:2709 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. $ ------------------------------------- int printf (const char *, ...); int a, b, d; static int c, e, f, g; int main () { int h = 0, i; if (b) { d = f; if (c) goto L1; goto L2; } for (; h < 2; h++) { int l, m = 0; for (; e < 2; e++) { m = ~m; L1:; } L2: while (l) for (i = 0; i < 2; i++) for (g = 0; g < 1; g++) if (m) printf ("%d", a); } return 0; }