summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/SimplifyCFG
diff options
context:
space:
mode:
authorJames Molloy <james.molloy@arm.com>2016-09-02 07:29:00 +0000
committerJames Molloy <james.molloy@arm.com>2016-09-02 07:29:00 +0000
commitf3cf2a494be6aeb52ee323a2f30c63d212afbd5b (patch)
treea38d7d3dbc8483967b7373820bbaa06601dd26f8 /llvm/test/Transforms/SimplifyCFG
parent3121ddf7fabef34e6876fc46dc243b125dd31b8e (diff)
downloadbcm5719-llvm-f3cf2a494be6aeb52ee323a2f30c63d212afbd5b.tar.gz
bcm5719-llvm-f3cf2a494be6aeb52ee323a2f30c63d212afbd5b.zip
[SimplifyCFG] Add a workaround to fix PR30188
We're sinking stores, which is a good thing, but in the process creating selects for the store address operand, which SROA/Mem2Reg can't look through, which caused serious regressions. The real fix is in SROA, which I'll be looking into. llvm-svn: 280470
Diffstat (limited to 'llvm/test/Transforms/SimplifyCFG')
-rw-r--r--llvm/test/Transforms/SimplifyCFG/sink-common-code.ll23
1 files changed, 23 insertions, 0 deletions
diff --git a/llvm/test/Transforms/SimplifyCFG/sink-common-code.ll b/llvm/test/Transforms/SimplifyCFG/sink-common-code.ll
index db9080effc3..66dfeb8658d 100644
--- a/llvm/test/Transforms/SimplifyCFG/sink-common-code.ll
+++ b/llvm/test/Transforms/SimplifyCFG/sink-common-code.ll
@@ -562,6 +562,29 @@ if.end:
; CHECK-DAG: [ %cmp3, %if.then3 ]
; CHECK-NEXT: zext i1 %[[x]] to i8
+define i32 @test_pr30188(i1 zeroext %flag, i32 %x) {
+entry:
+ %y = alloca i32
+ %z = alloca i32
+ br i1 %flag, label %if.then, label %if.else
+
+if.then:
+ store i32 %x, i32* %y
+ br label %if.end
+
+if.else:
+ store i32 %x, i32* %z
+ br label %if.end
+
+if.end:
+ ret i32 1
+}
+
+; CHECK-LABEL: test_pr30188
+; CHECK-NOT: select
+; CHECK: store
+; CHECK: store
+
; CHECK: !0 = !{!1, !1, i64 0}
; CHECK: !1 = !{!"float", !2}
; CHECK: !2 = !{!"an example type tree"}
OpenPOWER on IntegriCloud