summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
authorAlexandros Lamprineas <alexandros.lamprineas@arm.com>2018-07-16 07:51:27 +0000
committerAlexandros Lamprineas <alexandros.lamprineas@arm.com>2018-07-16 07:51:27 +0000
commitf854ce84c4cc676ff16adbe819db3bcfd325dabf (patch)
tree1e81ba2d3cd7311c35948627c326df601e60dedf /llvm/test/Transforms
parent832f49b90a4907a0bc2b34b688c32f3c9613aab0 (diff)
downloadbcm5719-llvm-f854ce84c4cc676ff16adbe819db3bcfd325dabf.tar.gz
bcm5719-llvm-f854ce84c4cc676ff16adbe819db3bcfd325dabf.zip
[MemorySSAUpdater] Remove deleted trivial Phis from active workset
Bug fix for PR37808. The regression test is a reduced version of the original reproducer attached to the bug report. As stated in the report, the problem was that InsertedPHIs was keeping dangling pointers to deleted Memory-Phis. MemoryPhis are created eagerly and sometimes get zapped shortly afterwards. I've used WeakVH instead of an expensive removal operation from the active workset. Differential Revision: https://reviews.llvm.org/D48372 llvm-svn: 337149
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/GVNHoist/pr37808.ll40
1 files changed, 40 insertions, 0 deletions
diff --git a/llvm/test/Transforms/GVNHoist/pr37808.ll b/llvm/test/Transforms/GVNHoist/pr37808.ll
new file mode 100644
index 00000000000..5705c6b89a3
--- /dev/null
+++ b/llvm/test/Transforms/GVNHoist/pr37808.ll
@@ -0,0 +1,40 @@
+; RUN: opt < %s -gvn-hoist -S | FileCheck %s
+
+define void @func() {
+; CHECK-LABEL: @func()
+; CHECK: bb6:
+; CHECK: store i64 0, i64* undef, align 8
+; CHECK: bb7:
+; CHECK-NOT: store i64 0, i64* undef, align 8
+; CHECK: bb8:
+; CHECK-NOT: store i64 0, i64* undef, align 8
+
+entry:
+ br label %bb1
+
+bb1:
+ br label %bb2
+
+bb2:
+ br label %bb3
+
+bb3:
+ br i1 undef, label %bb4, label %bb2
+
+bb4:
+ br i1 undef, label %bb5, label %bb3
+
+bb5:
+ br label %bb6
+
+bb6:
+ br i1 undef, label %bb7, label %bb8
+
+bb7:
+ store i64 0, i64* undef, align 8
+ unreachable
+
+bb8:
+ store i64 0, i64* undef, align 8
+ ret void
+}
OpenPOWER on IntegriCloud