https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80054
Bug ID: 80054 Summary: ICE in verify_ssa with -O3 -march=broadwell/skylake-avx512 Product: gcc Version: 7.0.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 40978 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40978&action=edit Reproducer. ICE with -O3 -march=broadwell (and skylake-avx512). Everything works fine with other optimization levels. Error: >$ g++ -O3 -march=broadwell -c repr.cpp repr.cpp: In function ‘void foo()’: repr.cpp:17:6: error: definition in block 7 does not dominate use in block 6 void foo() { ^~~ for SSA_NAME: _133 in statement: slsr_142 = PHI <_133(6), _133(16)> PHI argument _133 for PHI node slsr_142 = PHI <_133(6), _133(16)> repr.cpp:17:6: internal compiler error: verify_ssa failed 0xf84ad3 verify_ssa(bool, bool) /home/vsevolod/workspace/gcc-dev/trunk/gcc/tree-ssa.c:1184 0xc98ea7 execute_function_todo /home/vsevolod/workspace/gcc-dev/trunk/gcc/passes.c:1973 0xc99e0b execute_todo /home/vsevolod/workspace/gcc-dev/trunk/gcc/passes.c:2016 Reproducer: extern short var_2; extern short var_4; extern const bool var_32; extern short var_36; extern const bool var_37; extern bool var_46; extern unsigned int var_47; extern short var_49; extern unsigned int var_56; extern unsigned int var_62; extern unsigned int var_65; extern bool var_831; extern unsigned int var_843; extern short var_846; extern short var_889; void foo() { if (var_36 * var_37) var_831 = var_56 = 0; else var_65 = 0; if (var_46) var_843 = 0; var_846 = 0; if ((var_4 == 0) >> (var_32 | -(var_37 < var_46 || var_36)) + 8) var_49 = 2032651381 * bool(var_2 * var_37); else { var_62 = 0; var_47 = (var_46 || var_36) * (var_2 * var_37); } var_889 = bool(var_2 * var_37); } GCC version: gcc version 7.0.1 (today's trunk)