<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - NewGVN asserts "new class for instruction should not be dominated by instruction""
   href="https://llvm.org/bugs/show_bug.cgi?id=31682">31682</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>NewGVN asserts "new class for instruction should not be dominated by instruction"
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>libraries
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Windows NT
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Scalar Optimizations
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>davide@freebsd.org
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>dberlin@dberlin.org, llvm-bugs@lists.llvm.org
          </td>
        </tr>

        <tr>
          <th>Blocks</th>
          <td>30995
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Reduced:

%struct.widget = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32,
i32, float, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32,
i32, i32, i32, i32, i32, i8**, i8**, i32, i32***, i32, i32, i32, i32, i32, i32,
i32, i32, i32, i32, i32, i32, [9 x [16 x [16 x i16]]], [5 x [16 x [16 x i16]]],
[9 x [8 x [8 x i16]]], [2 x [4 x [16 x [16 x i16]]]], [16 x [16 x i16]], [16 x
[16 x i32]], i32****, i32***, i32***, i32***, i32****, i32****, %struct.baz*,
%struct.snork*, %struct.eggs*, i32*, i32*, i32, i32, i32, i32, [4 x [4 x i32]],
i32, i32, i32, i32, i32, double, i32, i32, i32, i32, i16******, i16******,
i16******, i16******, [15 x i16], i32, i32, i32, i32, i32, i32, i32, i32, [6 x
[32 x i32]], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32,
[1 x i32], i32, i32, [2 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32,
i32, i32, i32, i32, i32, i32, i32, %struct.wobble.1*, i32, i32, i32, i32, i32,
i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32,
i32, i32, double**, double***, i32***, double**, i32, i32, i32, i32, i32, i32,
i32, i32, i32, i32, [3 x [2 x i32]], [2 x i32], i32, i32, i16, i32, i32, i32,
i32, i32 }
%struct.baz = type { i32, i32, [100 x %struct.snork*], i32, float, float, float
}
%struct.snork = type { i32, i32, i32, i32, i32, i32, %struct.spam*,
%struct.wombat.0*, %struct.wobble*, i32, i32*, i32*, i32*, i32, i32*, i32*,
i32*, i32 (i32)*, [3 x [2 x i32]] }
%struct.spam = type { %struct.zot*, %struct.wombat, %struct.wombat }
%struct.zot = type { i32, i32, i8, i32, i32, i8, i8, i32, i32, i8*, i32 }
%struct.wombat = type { i32, i32, i32, i32, i32, i8*, i32*, i32, i32 }
%struct.wombat.0 = type { [3 x [11 x %struct.quux]], [2 x [9 x %struct.quux]],
[2 x [10 x %struct.quux]], [2 x [6 x %struct.quux]], [4 x %struct.quux], [4 x
%struct.quux], [3 x %struct.quux] }
%struct.quux = type { i16, i8, i64 }
%struct.wobble = type { [2 x %struct.quux], [4 x %struct.quux], [3 x [4 x
%struct.quux]], [10 x [4 x %struct.quux]], [10 x [15 x %struct.quux]], [10 x
[15 x %struct.quux]], [10 x [5 x %struct.quux]], [10 x [5 x %struct.quux]], [10
x [15 x %struct.quux]], [10 x [15 x %struct.quux]] }
%struct.eggs = type { i32, i32, i32, [2 x i32], i32, [8 x i32], %struct.eggs*,
%struct.eggs*, i32, [2 x [4 x [4 x [2 x i32]]]], [16 x i8], [16 x i8], i32,
i64, [4 x i32], [4 x i32], i64, i32, i32, i32, i32, i32, i32, i32, i32, i32,
i32, i32, i32, i32, i32, i32, i32, i16, double, i32, i32, i32, i32, i32, i32,
i32, i32, i32 }
%struct.wobble.1 = type { i32, i32, i32, i32, i32, %struct.wobble.1* }

@global = external local_unnamed_addr global %struct.widget*, align 8

define void @patatino() {
bb:
  %tmp = load %struct.widget*, %struct.widget** @global, align 8
  %tmp1 = getelementptr inbounds %struct.widget, %struct.widget* %tmp, i64 0,
i32 5
  br label %bb2

bb2:                                              ; preds = %bb2, %bb
  %tmp3 = phi %struct.widget* [ undef, %bb ], [ %tmp6, %bb2 ]
  %tmp4 = getelementptr inbounds %struct.widget, %struct.widget* %tmp3, i64 0,
i32 39
  %tmp5 = load i32, i32* %tmp4, align 8
  %tmp6 = load %struct.widget*, %struct.widget** @global, align 8
  br i1 undef, label %bb2, label %bb7

bb7:                                              ; preds = %bb2
  %tmp8 = phi %struct.widget* [ %tmp6, %bb2 ]
  %tmp9 = getelementptr inbounds %struct.widget, %struct.widget* %tmp8, i64 0,
i32 39
  br label %bb10

bb10:                                             ; preds = %bb10, %bb7
  %tmp11 = load i32, i32* %tmp9, align 8
  br label %bb10
}</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>