[llvm-bugs] [Bug 31682] New: NewGVN asserts "new class for instruction should not be dominated by instruction"

via llvm-bugs llvm-bugs at lists.llvm.org
Wed Jan 18 13:24:49 PST 2017


https://llvm.org/bugs/show_bug.cgi?id=31682

            Bug ID: 31682
           Summary: NewGVN asserts "new class for instruction should not
                    be dominated by instruction"
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: normal
          Priority: P
         Component: Scalar Optimizations
          Assignee: unassignedbugs at nondot.org
          Reporter: davide at freebsd.org
                CC: dberlin at dberlin.org, llvm-bugs at lists.llvm.org
            Blocks: 30995
    Classification: Unclassified

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
}

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20170118/6f1efe9e/attachment.html>


More information about the llvm-bugs mailing list