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)