https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81987
Bug ID: 81987 Summary: ICE in verify_ssa with -O3 -march=skylake-avx512 Product: gcc Version: 8.0 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: --- g++ -O3 -march=skylake-avx512 fails with ICE in verify_ssa with error: definition in block 11 does not dominate use in block 2 There are several trackers with the same error message, but some of them fails only with -O2 -floop-nest-optimize option (69675, 79483), other were fixed (71252). So i don't know, if this bug is duplicate or not. >$ cat repr.cpp extern short var_1; extern const short var_3; extern unsigned long int var_9; extern short var_13; extern const unsigned long int var_15; extern const unsigned long int var_37; extern unsigned long int var_40; extern long long int var_47; extern short var_48; extern const short var_54; extern long long int var_79; extern long long int var_81; extern long long int var_94; extern long long int var_95; extern long long int var_701; extern unsigned long int var_786; extern short var_788; extern long long int var_844; struct struct_1 { short member_1_2 : 30; static long long int member_1_3; }; extern struct_1 struct_obj_6; extern struct_1 struct_obj_8; void foo() { int a = var_3 <= 602154393864UL; if (var_81 ? 0 : var_3 && var_9) ; else { var_94 = 0; if (var_3 && var_48 || var_13) { if (var_48) var_95 = 0; short b((2364461588881776511UL + var_3) * (2 ? var_13 : 0) || var_1); struct_obj_8.member_1_2 = b; if (var_15) { if (var_81) if (var_47) ; else if (var_40) var_701 = 0; } else { if (var_40) var_79 = 0; if (var_54) { if (var_37) var_786 = 0; else var_788 = 0; struct_obj_6.member_1_3 = (2364461588881776511UL + var_3) * (2 ? var_13 : 0); } } if ((2364461588881776511UL + var_3) * (2 ? var_13 : 0)) var_844 = 0; } } } Error: >g++ -O3 -march=skylake-avx512 -c repr.cpp repr.cpp: In function ‘void foo()’: repr.cpp:28:6: error: definition in block 11 does not dominate use in block 2 void foo() { ^~~ for SSA_NAME: _10 in statement: slsr_104 = _10 * 2364461588881776511; during GIMPLE pass: slsr repr.cpp:28:6: internal compiler error: verify_ssa failed 0x1095c1b verify_ssa(bool, bool) /home/vsevolod/workspace/gcc-dev/trunk/gcc/tree-ssa.c:1188 0xd7ad1d execute_function_todo /home/vsevolod/workspace/gcc-dev/trunk/gcc/passes.c:1999 0xd7b619 execute_todo /home/vsevolod/workspace/gcc-dev/trunk/gcc/passes.c:2046 GCC version is 251301