[llvm] 44c86e5 - [GVN] Add test for capture tracking use limit.

Florian Hahn via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 2 12:15:53 PDT 2022


Author: Florian Hahn
Date: 2022-06-02T20:15:26+01:00
New Revision: 44c86e5cdc625ff61a467dfe38ac15dfa2913070

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

LOG: [GVN] Add test for capture tracking use limit.

Test for capture-tracking-max-uses-to-explore, adjusted in D126236.

Added: 
    llvm/test/Transforms/GVN/capture-tracking-limit.ll

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/GVN/capture-tracking-limit.ll b/llvm/test/Transforms/GVN/capture-tracking-limit.ll
new file mode 100644
index 0000000000000..12257005395bc
--- /dev/null
+++ b/llvm/test/Transforms/GVN/capture-tracking-limit.ll
@@ -0,0 +1,64 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -aa-pipeline=basic-aa -passes="gvn" -S %s | FileCheck --check-prefixes=CHECK,LIMIT-TOO-SMALL  %s
+; RUN: opt -aa-pipeline=basic-aa -passes="gvn" -S -capture-tracking-max-uses-to-explore=20 %s | FileCheck --check-prefixes=CHECK,LIMIT-TOO-SMALL %s
+; RUN: opt -aa-pipeline=basic-aa -passes="gvn" -S -capture-tracking-max-uses-to-explore=21 %s | FileCheck --check-prefixes=CHECK,LIMIT %s
+
+define i32 @test1(i32* %p, i1 %C) {
+; CHECK-LABEL: @test1(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    [[A:%.*]] = alloca i32, align 4
+; CHECK-NEXT:    call void @dont_capture(i32* [[A]])
+; CHECK-NEXT:    call void @dont_capture(i32* [[A]])
+; CHECK-NEXT:    call void @dont_capture(i32* [[A]])
+; CHECK-NEXT:    call void @dont_capture(i32* [[A]])
+; CHECK-NEXT:    call void @dont_capture(i32* [[A]])
+; CHECK-NEXT:    call void @dont_capture(i32* [[A]])
+; CHECK-NEXT:    call void @dont_capture(i32* [[A]])
+; CHECK-NEXT:    call void @dont_capture(i32* [[A]])
+; CHECK-NEXT:    call void @dont_capture(i32* [[A]])
+; CHECK-NEXT:    call void @dont_capture(i32* [[A]])
+; CHECK-NEXT:    call void @dont_capture(i32* [[A]])
+; CHECK-NEXT:    call void @dont_capture(i32* [[A]])
+; CHECK-NEXT:    call void @dont_capture(i32* [[A]])
+; CHECK-NEXT:    call void @dont_capture(i32* [[A]])
+; CHECK-NEXT:    call void @dont_capture(i32* [[A]])
+; CHECK-NEXT:    call void @dont_capture(i32* [[A]])
+; CHECK-NEXT:    call void @dont_capture(i32* [[A]])
+; CHECK-NEXT:    call void @dont_capture(i32* [[A]])
+; CHECK-NEXT:    call void @dont_capture(i32* [[A]])
+; CHECK-NEXT:    store i32 1, i32* [[A]], align 4
+; CHECK-NEXT:    call void @may_write()
+; LIMIT-TOO-SMALL-NEXT:    [[L:%.*]] = load i32, i32* [[A]], align 4
+; LIMIT-TOO-SMALL-NEXT:    ret i32 [[L]]
+; LIMIT-NEXT:    ret i32 1
+;
+entry:
+  %a = alloca i32
+  call void @dont_capture(i32* %a)
+  call void @dont_capture(i32* %a)
+  call void @dont_capture(i32* %a)
+  call void @dont_capture(i32* %a)
+  call void @dont_capture(i32* %a)
+  call void @dont_capture(i32* %a)
+  call void @dont_capture(i32* %a)
+  call void @dont_capture(i32* %a)
+  call void @dont_capture(i32* %a)
+  call void @dont_capture(i32* %a)
+  call void @dont_capture(i32* %a)
+  call void @dont_capture(i32* %a)
+  call void @dont_capture(i32* %a)
+  call void @dont_capture(i32* %a)
+  call void @dont_capture(i32* %a)
+  call void @dont_capture(i32* %a)
+  call void @dont_capture(i32* %a)
+  call void @dont_capture(i32* %a)
+  call void @dont_capture(i32* %a)
+  store i32 1, i32* %a
+  call void @may_write()
+  %l = load i32, i32* %a
+  ret i32 %l
+}
+
+declare void @dont_capture(i32* nocapture)
+
+declare void @may_write()


        


More information about the llvm-commits mailing list