summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-07-21 07:16:26 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-07-21 07:16:26 +0000
commit825e4ab9e39ce2a3f115e19ecb09fd97c8a03432 (patch)
tree10cb599b6d3c280986e06877970a3acc9dc68a15 /llvm/test/Transforms
parent903eefd1f22dfbbbf2443274d27ae93af60fd146 (diff)
downloadbcm5719-llvm-825e4ab9e39ce2a3f115e19ecb09fd97c8a03432.tar.gz
bcm5719-llvm-825e4ab9e39ce2a3f115e19ecb09fd97c8a03432.zip
[GVNHoist] Preserve optimization hints which agree
If we have optimization hints with agree with each other along different paths, preserve them. llvm-svn: 276248
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/GVN/hoist-md.ll44
1 files changed, 44 insertions, 0 deletions
diff --git a/llvm/test/Transforms/GVN/hoist-md.ll b/llvm/test/Transforms/GVN/hoist-md.ll
index 14cc848868e..8661542c03e 100644
--- a/llvm/test/Transforms/GVN/hoist-md.ll
+++ b/llvm/test/Transforms/GVN/hoist-md.ll
@@ -21,6 +21,50 @@ if.end: ; preds = %if.else, %if.then
; CHECK: store i32 2, i32* %x, align 4
; CHECK-NEXT: br i1 %b
+define void @test2(i1 %b, i32* %x) {
+entry:
+ br i1 %b, label %if.then, label %if.else
+
+if.then: ; preds = %entry
+ %gep1 = getelementptr inbounds i32, i32* %x, i64 1
+ store i32 2, i32* %gep1, align 4, !tbaa !1
+ br label %if.end
+
+if.else: ; preds = %entry
+ %gep2 = getelementptr inbounds i32, i32* %x, i64 1
+ store i32 2, i32* %gep2, align 4, !tbaa !5
+ br label %if.end
+
+if.end: ; preds = %if.else, %if.then
+ ret void
+}
+; CHECK-LABEL: define void @test2(
+; CHECK: %[[gep:.*]] = getelementptr inbounds i32, i32* %x, i64 1
+; CHECK: store i32 2, i32* %[[gep]], align 4
+; CHECK-NEXT: br i1 %b
+
+define void @test3(i1 %b, i32* %x) {
+entry:
+ br i1 %b, label %if.then, label %if.else
+
+if.then: ; preds = %entry
+ %gep1 = getelementptr inbounds i32, i32* %x, i64 1
+ store i32 2, i32* %gep1, align 4, !tbaa !1
+ br label %if.end
+
+if.else: ; preds = %entry
+ %gep2 = getelementptr i32, i32* %x, i64 1
+ store i32 2, i32* %gep2, align 4, !tbaa !5
+ br label %if.end
+
+if.end: ; preds = %if.else, %if.then
+ ret void
+}
+; CHECK-LABEL: define void @test3(
+; CHECK: %[[gep:.*]] = getelementptr i32, i32* %x, i64 1
+; CHECK: store i32 2, i32* %[[gep]], align 4
+; CHECK-NEXT: br i1 %b
+
!1 = !{!2, !2, i64 0}
!2 = !{!"int", !3, i64 0}
!3 = !{!"omnipotent char", !4, i64 0}
OpenPOWER on IntegriCloud