diff options
| author | Alexandros Lamprineas <alexandros.lamprineas@arm.com> | 2018-07-16 07:51:27 +0000 |
|---|---|---|
| committer | Alexandros Lamprineas <alexandros.lamprineas@arm.com> | 2018-07-16 07:51:27 +0000 |
| commit | f854ce84c4cc676ff16adbe819db3bcfd325dabf (patch) | |
| tree | 1e81ba2d3cd7311c35948627c326df601e60dedf /llvm/test/Transforms | |
| parent | 832f49b90a4907a0bc2b34b688c32f3c9613aab0 (diff) | |
| download | bcm5719-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.ll | 40 |
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 +} |

