mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 13:11:39 +01:00
c14781c9c9
Summary: We should excluded unreachable operands from processing as their DFS visitation order is undefined. When `renameUses` function sorts `OpsToRename` (https://fburl.com/d2wubn60), the comparator assumes that the parent block of the operand has a corresponding dominator tree node. This is not the case for unreachable operands and crashes the compiler. Reviewers: dberlin, mgrang, davide Subscribers: efriedma, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D61154 llvm-svn: 360796
26 lines
460 B
LLVM
26 lines
460 B
LLVM
; RUN: opt -print-predicateinfo < %s 2>&1 | FileCheck %s
|
|
|
|
declare void @foo()
|
|
declare void @llvm.assume(i1)
|
|
|
|
define void @bar(i32* %p) {
|
|
entry:
|
|
; CHECK-LABEL: @bar
|
|
br label %end
|
|
|
|
unreachable1:
|
|
%v1 = load i32, i32* %p, align 4
|
|
%c1 = icmp eq i32 %v1, 0
|
|
call void @llvm.assume(i1 %c1)
|
|
br label %unreachable2
|
|
|
|
unreachable2:
|
|
%v2 = load i32, i32* %p, align 4
|
|
%c2 = icmp eq i32 %v2, 0
|
|
call void @llvm.assume(i1 %c2)
|
|
br label %end
|
|
|
|
end:
|
|
ret void
|
|
}
|