summaryrefslogtreecommitdiffstats
path: root/llvm/test/Analysis/AliasSet
diff options
context:
space:
mode:
authorSanjoy Das <sanjoy@playingwithpointers.com>2017-05-01 17:07:56 +0000
committerSanjoy Das <sanjoy@playingwithpointers.com>2017-05-01 17:07:56 +0000
commitddebb703fc6e831f94d7305eab2e1e8547785a7f (patch)
tree9180d2954ee6be13dfc8e982018dc8a5f514335f /llvm/test/Analysis/AliasSet
parentf1c0eafd5b10d33d957457ef292c56e6bab17938 (diff)
downloadbcm5719-llvm-ddebb703fc6e831f94d7305eab2e1e8547785a7f.tar.gz
bcm5719-llvm-ddebb703fc6e831f94d7305eab2e1e8547785a7f.zip
Use WeakVH instead of WeakTrackingVH in AliasSetTracker's UnkownInsts
In cases where an instruction (a call site, say) is RAUW'ed with some other value (this is possible via the `returned` attribute, for instance), we want the slot in UnknownInsts to point to the original Instruction we wanted to track, not the value it got replaced by. Fixes PR32587. This relands r301426. llvm-svn: 301814
Diffstat (limited to 'llvm/test/Analysis/AliasSet')
-rw-r--r--llvm/test/Analysis/AliasSet/unknown-inst-tracking.ll25
1 files changed, 25 insertions, 0 deletions
diff --git a/llvm/test/Analysis/AliasSet/unknown-inst-tracking.ll b/llvm/test/Analysis/AliasSet/unknown-inst-tracking.ll
new file mode 100644
index 00000000000..da528fbae07
--- /dev/null
+++ b/llvm/test/Analysis/AliasSet/unknown-inst-tracking.ll
@@ -0,0 +1,25 @@
+; RUN: opt -S -licm -loop-unswitch < %s | FileCheck %s
+
+; This test checks for a crash. See PR32587.
+
+@global = external global i32
+
+declare i32 @f_1(i8, i32 returned)
+
+define i32 @f_0() {
+; CHECK-LABEL: @f_0(
+bb:
+ br label %bb1
+
+bb1: ; preds = %bb3, %bb
+ %tmp = load i32, i32* @global
+ %tmp2 = select i1 false, i16 1, i16 0
+ br label %bb3
+
+bb3: ; preds = %bb3, %bb1
+ %tmp4 = phi i8 [ 0, %bb1 ], [ %tmp6, %bb3 ]
+ %tmp5 = icmp eq i16 %tmp2, 0
+ %tmp6 = select i1 %tmp5, i8 %tmp4, i8 1
+ %tmp7 = tail call i32 @f_1(i8 %tmp6, i32 1)
+ br i1 false, label %bb1, label %bb3
+}
OpenPOWER on IntegriCloud