diff options
| author | Geoff Berry <gberry@codeaurora.org> | 2016-10-25 16:18:47 +0000 |
|---|---|---|
| committer | Geoff Berry <gberry@codeaurora.org> | 2016-10-25 16:18:47 +0000 |
| commit | 91e9a5cc236941473e9791de0071f02378e0497d (patch) | |
| tree | 761b0e5c3bc14dec8c0bf54766a65a2b2a36e861 /llvm/test | |
| parent | 58139d1758c116e4f86d859fe99b11dafca1ec9f (diff) | |
| download | bcm5719-llvm-91e9a5cc236941473e9791de0071f02378e0497d.tar.gz bcm5719-llvm-91e9a5cc236941473e9791de0071f02378e0497d.zip | |
[EarlyCSE] Make MemorySSA memory dependency check more aggressive.
Now that MemorySSA keeps track of whether MemoryUses are optimized, use
getClobberingMemoryAccess() to check MemoryUse memory dependencies since
it should no longer be so expensive.
This is a follow-up change to https://reviews.llvm.org/D25881
llvm-svn: 285080
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/Transforms/EarlyCSE/memoryssa.ll | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/llvm/test/Transforms/EarlyCSE/memoryssa.ll b/llvm/test/Transforms/EarlyCSE/memoryssa.ll index 9c7f64af004..1c10efe2293 100644 --- a/llvm/test/Transforms/EarlyCSE/memoryssa.ll +++ b/llvm/test/Transforms/EarlyCSE/memoryssa.ll @@ -5,6 +5,7 @@ @G1 = global i32 zeroinitializer @G2 = global i32 zeroinitializer +@G3 = global i32 zeroinitializer ;; Simple load value numbering across non-clobbering store. ; CHECK-LABEL: @test1( @@ -67,3 +68,41 @@ end: store i32 %sum, i32* @G2 ret void } + + +;; Check that MemoryPhi optimization and MemoryUse re-optimization +;; happens during EarlyCSE, enabling more load CSE opportunities. +; CHECK-LABEL: @test_memphiopt2( +; CHECK-NOMEMSSA-LABEL: @test_memphiopt2( +define void @test_memphiopt2(i1 %c, i32* %p) { +; CHECK-LABEL: entry: +; CHECK-NOMEMSSA-LABEL: entry: +entry: +; CHECK: load +; CHECK-NOMEMSSA: load + %v1 = load i32, i32* @G1 +; CHECK: store +; CHECK-NOMEMSSA: store + store i32 %v1, i32* @G2 + br i1 %c, label %then, label %end + +; CHECK-LABEL: then: +; CHECK-NOMEMSSA-LABEL: then: +then: +; CHECK: load +; CHECK-NOMEMSSA: load + %pv = load i32, i32* %p +; CHECK-NOT: store +; CHECK-NOMEMSSA-NOT: store + store i32 %pv, i32* %p + br label %end + +; CHECK-LABEL: end: +; CHECK-NOMEMSSA-LABEL: end: +end: +; CHECK-NOT: load +; CHECK-NOMEMSSA: load + %v2 = load i32, i32* @G1 + store i32 %v2, i32* @G3 + ret void +} |

