[Bug tree-optimization/107876] New: [13 Regression] ICE in verify_dominators, at dominance.cc:1184 (error: dominator of 4 should be 14, not 16)

asolokha at gmx dot com gcc-bugzilla@gcc.gnu.org
Sat Nov 26 08:18:22 GMT 2022


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107876

            Bug ID: 107876
           Summary: [13 Regression] ICE in verify_dominators, at
                    dominance.cc:1184 (error: dominator of 4 should be 14,
                    not 16)
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: asolokha at gmx dot com
  Target Milestone: ---

gfortran 13.0.0 20221120 snapshot (g:a16a5460447eaaff0b4468064e4d7b1cc8fc42eb)
ICEs when compiling the following testcase, extracted from
clang/testsuite/CodeGenCXX/nrvo.cpp from the clang 15 test suite, w/ -O2
-funswitch-loops --param max-unswitch-insns=2:

class X {
public:
  X();
  X(const X&);
  X(const volatile X &);
  ~X();
};

X test17(int i) {
  if (false) {
  impossible:
    if (i == 3)
      return X();
  }

  while (true) {
    X x;
    if (i == 0)
      return x;
    if (i == 1)
      break;
    if (i == 2)
      continue;
    if (i == 3)
      goto impossible;
    if (i == 4)
      __builtin_exit(1);
    if (i == 5)
      return x;
  }
  return X();
}

% g++-13 -O2 -funswitch-loops --param max-unswitch-insns=2 -c iakwvinl.cpp
iakwvinl.cpp: In function 'X test17(int)':
iakwvinl.cpp:9:3: error: dominator of 4 should be 14, not 16
    9 | X test17(int i) {
      |   ^~~~~~
iakwvinl.cpp:9:3: error: dominator of 6 should be 14, not 16
iakwvinl.cpp:9:3: error: dominator of 7 should be 14, not 16
iakwvinl.cpp:9:3: error: dominator of 8 should be 14, not 16
iakwvinl.cpp:9:3: error: dominator of 10 should be 14, not 16
iakwvinl.cpp:9:3: error: dominator of 11 should be 14, not 16
iakwvinl.cpp:9:3: error: dominator of 13 should be 14, not 16
during GIMPLE pass: unswitch
iakwvinl.cpp:9:3: internal compiler error: in verify_dominators, at
dominance.cc:1184
0x7a0ae6 verify_dominators(cdi_direction)
       
/var/tmp/portage/sys-devel/gcc-13.0.0_p20221120/work/gcc-13-20221120/gcc/dominance.cc:1184
0x121a869 checking_verify_dominators
       
/var/tmp/portage/sys-devel/gcc-13.0.0_p20221120/work/gcc-13-20221120/gcc/dominance.h:76
0x121a869 cleanup_tree_cfg_noloop
       
/var/tmp/portage/sys-devel/gcc-13.0.0_p20221120/work/gcc-13-20221120/gcc/tree-cfgcleanup.cc:1113
0x121a869 cleanup_tree_cfg(unsigned int)
       
/var/tmp/portage/sys-devel/gcc-13.0.0_p20221120/work/gcc-13-20221120/gcc/tree-cfgcleanup.cc:1212
0x10dddac execute_function_todo
       
/var/tmp/portage/sys-devel/gcc-13.0.0_p20221120/work/gcc-13-20221120/gcc/passes.cc:2057
0x10de20e execute_todo
       
/var/tmp/portage/sys-devel/gcc-13.0.0_p20221120/work/gcc-13-20221120/gcc/passes.cc:2145


More information about the Gcc-bugs mailing list