https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69740
--- Comment #3 from Qirun Zhang <helloqirun at gmail dot com> --- (In reply to Jakub Jelinek from comment #1) > Started with r218566. Here is a similar case. The stack trace is almost the same as in the original RP's. However, this one crashes the current trunk at -O3 only (The original RP still crashes the current trunk at -O2 and above). I am not sure if this is a dup of the original RP.. $ gcc-trunk -v Using built-in specs. COLLECT_GCC=gcc-trunk COLLECT_LTO_WRAPPER=/home/absozero/trunk/root-gcc/libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../gcc/configure --prefix=/home/absozero/trunk/root-gcc --enable-languages=c,c++ --disable-werror --enable-multilib Thread model: posix gcc version 6.0.0 20160221 (experimental) [trunk revision 233594] (GCC) $ gcc-trunk -O2 abc.c $ gcc-trunk -Os abc.c $ gcc-trunk -O3 abc.c abc.c: In function 'main': abc.c:7:5: error: loop with header 5 not in loop tree int main() { ^~~~ abc.c:7:5: internal compiler error: in verify_loop_structure, at cfgloop.c:1639 0x75e6bf verify_loop_structure() ../../gcc/gcc/cfgloop.c:1639 0x9d9e9e checking_verify_loop_structure ../../gcc/gcc/cfgloop.h:324 0x9d9e9e loop_optimizer_init(unsigned int) ../../gcc/gcc/loop-init.c:106 0xd198dd execute ../../gcc/gcc/tree-ssa-sink.c:619 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://gcc.gnu.org/bugs.html> for instructions. $ cat abc.c inline int foo(int *p1, int p2) { int z = *p1; while (z > p2) p2 = 2; return z; } int main() { int i; for (;;) { int j, k; i = foo(&k, 7); if (k) j = i; else k = j; if (2 != j) __builtin_abort(); } }