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

Reply via email to