llvm/test/Transforms/GVN/pr24397.ll
David Majnemer 9585c546b9 [PHITransAddr] Don't assume that instruction operands are translatable
We can only PHI translate instructions.  In our attempt to PHI translate
a bitcast, we attempt to translate its operand; however, the operand
might be an argument or a global instead of an instruction.  Benignly
bail out when this happens.

This fixes PR24397.

Differential Revision: http://reviews.llvm.org/D11879

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244418 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-09 15:43:02 +00:00

19 lines
486 B
LLVM

; RUN: opt -basicaa -gvn -disable-output < %s
target triple = "x86_64-unknown-linux-gnu"
define i64 @foo(i64** %arrayidx) {
entry:
%p = load i64*, i64** %arrayidx, align 8
%cmpnull = icmp eq i64* %p, null
br label %BB2
entry2: ; No predecessors!
br label %BB2
BB2: ; preds = %entry2, %entry
%bc = bitcast i64** %arrayidx to i64*
%load = load i64, i64* %bc, align 8
ret i64 %load
}