summaryrefslogtreecommitdiffstats
path: root/llvm/test/Feature
diff options
context:
space:
mode:
authorSanjoy Das <sanjoy@playingwithpointers.com>2015-11-04 23:21:06 +0000
committerSanjoy Das <sanjoy@playingwithpointers.com>2015-11-04 23:21:06 +0000
commitea34382dfaff899a6a9f73455d3fab56c3af0d50 (patch)
treecd73938351b39d738be7709e82150e49ea78a16b /llvm/test/Feature
parent7769b4a1d0f81f93181372a0657eaa0b7ad4748e (diff)
downloadbcm5719-llvm-ea34382dfaff899a6a9f73455d3fab56c3af0d50.tar.gz
bcm5719-llvm-ea34382dfaff899a6a9f73455d3fab56c3af0d50.zip
[CaptureTracking] Support operand bundles conservatively
Summary: Earlier CaptureTracking would assume all "interesting" operands to a call or invoke were its arguments. With operand bundles this is no longer true. Note: an earlier change got `doesNotCapture` working correctly with operand bundles. This change uses DSE to test the changes to CaptureTracking. DSE is a vehicle for testing only, and is not directly involved in this change. Reviewers: reames, majnemer Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D14306 llvm-svn: 252095
Diffstat (limited to 'llvm/test/Feature')
-rw-r--r--llvm/test/Feature/OperandBundles/dse.ll29
1 files changed, 29 insertions, 0 deletions
diff --git a/llvm/test/Feature/OperandBundles/dse.ll b/llvm/test/Feature/OperandBundles/dse.ll
new file mode 100644
index 00000000000..cc5647a2fa0
--- /dev/null
+++ b/llvm/test/Feature/OperandBundles/dse.ll
@@ -0,0 +1,29 @@
+; RUN: opt -S -dse < %s | FileCheck %s
+
+declare void @f()
+declare noalias i8* @malloc(i32) nounwind
+
+define void @test_0() {
+; CHECK-LABEL: @test_0(
+ %m = call i8* @malloc(i32 24)
+ tail call void @f() [ "unknown"(i8* %m) ]
+; CHECK: store i8 -19, i8* %m
+ store i8 -19, i8* %m
+ ret void
+}
+
+define i8* @test_1() {
+; CHECK-LABEL: @test_1(
+ %m = call i8* @malloc(i32 24)
+ tail call void @f() [ "unknown"(i8* %m) ]
+ store i8 -19, i8* %m
+ tail call void @f()
+ store i8 101, i8* %m
+
+; CHECK: tail call void @f() [ "unknown"(i8* %m) ]
+; CHECK: store i8 -19, i8* %m
+; CHECK: tail call void @f()
+; CHECK: store i8 101, i8* %m
+
+ ret i8* %m
+}
OpenPOWER on IntegriCloud