[llvm] e50a508 - [MemorySSA] Add test for gep with loop invariant pointer operand and

via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 9 05:02:06 PST 2023


Author: luxufan
Date: 2023-02-09T20:40:10+08:00
New Revision: e50a508b5c3d3d814340e8818c757295d27c48dd

URL: https://github.com/llvm/llvm-project/commit/e50a508b5c3d3d814340e8818c757295d27c48dd
DIFF: https://github.com/llvm/llvm-project/commit/e50a508b5c3d3d814340e8818c757295d27c48dd.diff

LOG: [MemorySSA] Add test for gep with loop invariant pointer operand and
indexes are all constant

Added: 
    llvm/test/Analysis/MemorySSA/loop-invariant.ll

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/llvm/test/Analysis/MemorySSA/loop-invariant.ll b/llvm/test/Analysis/MemorySSA/loop-invariant.ll
new file mode 100644
index 0000000000000..071f77e2c1234
--- /dev/null
+++ b/llvm/test/Analysis/MemorySSA/loop-invariant.ll
@@ -0,0 +1,45 @@
+; RUN: opt -passes='print<memoryssa>' -disable-output < %s 2>&1 | FileCheck %s
+
+; TODO: The load's MemoryUse can be defined by liveOnEntry. Since
+; %p2 is a loop invariant and the MemoryLoc of load instr and store inst in
+; loop block are NoAlias
+;
+; CHECK: MemoryUse(2)
+; CHECK: %val = load i32, ptr %p2
+define void @gep(ptr %ptr) {
+entry:
+  %p1 = getelementptr i32, ptr %ptr, i32 1
+  br label %tmp
+
+tmp:
+  %p2 = getelementptr i32, ptr %p1, i32 1
+  br label %loop
+
+loop:
+  %x = phi i32 [ 0, %tmp ], [ %x.inc, %loop ]
+  %val = load i32, ptr %p2
+  %p3 = getelementptr i32, ptr %p2, i32 1
+  store volatile i32 0, ptr %p3
+  %x.inc = add i32 %x, %val
+  br label %loop
+}
+
+; CHECK: MemoryUse(2)
+; CHECK-NEXT: %val = load i32, ptr %p2
+define void @load_entry_block(ptr %ptr, ptr %addr) {
+entry:
+  %p1 = load ptr, ptr %ptr
+  br label %tmp
+
+tmp:
+  %p2 = getelementptr i32, ptr %p1, i32 1
+  br label %loop
+
+loop:
+  %x = phi i32 [ 0, %tmp ], [ %x.inc, %loop ]
+  %val = load i32, ptr %p2
+  %p3 = getelementptr i32, ptr %p2, i32 1
+  store volatile i32 0, ptr %p3
+  %x.inc = add i32 %x, %val
+  br label %loop
+}


        


More information about the llvm-commits mailing list