diff options
Diffstat (limited to 'llvm/test/Transforms/Inline/launder.invariant.group.ll')
-rw-r--r-- | llvm/test/Transforms/Inline/launder.invariant.group.ll | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/llvm/test/Transforms/Inline/launder.invariant.group.ll b/llvm/test/Transforms/Inline/launder.invariant.group.ll deleted file mode 100644 index 5ada6202f8f..00000000000 --- a/llvm/test/Transforms/Inline/launder.invariant.group.ll +++ /dev/null @@ -1,59 +0,0 @@ -; RUN: opt -S -inline < %s | FileCheck %s -; RUN: opt -S -O3 < %s | FileCheck %s -; RUN: opt -S -inline -inline-threshold=1 < %s | FileCheck %s - -%struct.A = type <{ i32 (...)**, i32, [4 x i8] }> - -; This test checks if value returned from the launder is considered aliasing -; with its argument. Due to bug caused by handling launder in capture tracking -; sometimes it would be considered noalias. -; CHECK-LABEL: define i32 @bar(%struct.A* noalias -define i32 @bar(%struct.A* noalias) { -; CHECK-NOT: noalias - %2 = bitcast %struct.A* %0 to i8* - %3 = call i8* @llvm.launder.invariant.group.p0i8(i8* %2) - %4 = getelementptr inbounds i8, i8* %3, i64 8 - %5 = bitcast i8* %4 to i32* - store i32 42, i32* %5, align 8 - %6 = getelementptr inbounds %struct.A, %struct.A* %0, i64 0, i32 1 - %7 = load i32, i32* %6, align 8 - ret i32 %7 -} - -; CHECK-LABEL: define i32 @foo(%struct.A* noalias -define i32 @foo(%struct.A* noalias) { - ; CHECK-NOT: call i32 @bar( - ; CHECK-NOT: noalias - %2 = tail call i32 @bar(%struct.A* %0) - ret i32 %2 -} - - -; This test checks if invariant group intrinsics have zero cost for inlining. -; CHECK-LABEL: define i8* @caller(i8* -define i8* @caller(i8* %p) { -; CHECK-NOT: call i8* @lot_of_launders_and_strips - %a1 = call i8* @lot_of_launders_and_strips(i8* %p) - %a2 = call i8* @lot_of_launders_and_strips(i8* %a1) - %a3 = call i8* @lot_of_launders_and_strips(i8* %a2) - %a4 = call i8* @lot_of_launders_and_strips(i8* %a3) - ret i8* %a4 -} - -define i8* @lot_of_launders_and_strips(i8* %p) { - %a1 = call i8* @llvm.launder.invariant.group.p0i8(i8* %p) - %a2 = call i8* @llvm.launder.invariant.group.p0i8(i8* %a1) - %a3 = call i8* @llvm.launder.invariant.group.p0i8(i8* %a2) - %a4 = call i8* @llvm.launder.invariant.group.p0i8(i8* %a3) - - %s1 = call i8* @llvm.strip.invariant.group.p0i8(i8* %a4) - %s2 = call i8* @llvm.strip.invariant.group.p0i8(i8* %s1) - %s3 = call i8* @llvm.strip.invariant.group.p0i8(i8* %s2) - %s4 = call i8* @llvm.strip.invariant.group.p0i8(i8* %s3) - - ret i8* %s4 -} - - -declare i8* @llvm.launder.invariant.group.p0i8(i8*) -declare i8* @llvm.strip.invariant.group.p0i8(i8*) |