diff options
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/Analysis/BasicAA/assume.ll | 23 | ||||
| -rw-r--r-- | llvm/test/CodeGen/Generic/assume.ll | 9 | ||||
| -rw-r--r-- | llvm/test/Transforms/InstSimplify/assume.ll | 13 | ||||
| -rw-r--r-- | llvm/test/Transforms/SimplifyCFG/assume.ll | 22 |
4 files changed, 67 insertions, 0 deletions
diff --git a/llvm/test/Analysis/BasicAA/assume.ll b/llvm/test/Analysis/BasicAA/assume.ll new file mode 100644 index 00000000000..e163b5a4161 --- /dev/null +++ b/llvm/test/Analysis/BasicAA/assume.ll @@ -0,0 +1,23 @@ +; RUN: opt < %s -basicaa -aa-eval -print-all-alias-modref-info -disable-output 2>&1 | FileCheck %s +target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:32:64-v128:32:128-a0:0:32-n32" + +declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i32, i1) #0 +declare void @llvm.assume(i1) #0 + +define void @test1(i8* %P, i8* %Q) nounwind ssp { + tail call void @llvm.assume(i1 true) + tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %P, i8* %Q, i64 12, i32 1, i1 false) + ret void + +; CHECK-LABEL: Function: test1: + +; CHECK: MayAlias: i8* %P, i8* %Q +; CHECK: NoModRef: Ptr: i8* %P <-> tail call void @llvm.assume(i1 true) +; CHECK: NoModRef: Ptr: i8* %Q <-> tail call void @llvm.assume(i1 true) +; CHECK: Both ModRef: Ptr: i8* %P <-> tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %P, i8* %Q, i64 12, i32 1, i1 false) +; CHECK: Both ModRef: Ptr: i8* %Q <-> tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %P, i8* %Q, i64 12, i32 1, i1 false) +; CHECK: NoModRef: tail call void @llvm.assume(i1 true) <-> tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %P, i8* %Q, i64 12, i32 1, i1 false) +; CHECK: NoModRef: tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %P, i8* %Q, i64 12, i32 1, i1 false) <-> tail call void @llvm.assume(i1 true) +} + +attributes #0 = { nounwind } diff --git a/llvm/test/CodeGen/Generic/assume.ll b/llvm/test/CodeGen/Generic/assume.ll new file mode 100644 index 00000000000..bb045b38465 --- /dev/null +++ b/llvm/test/CodeGen/Generic/assume.ll @@ -0,0 +1,9 @@ +; RUN: llc < %s + +define void @main() { + call void @llvm.assume(i1 1) + ret void +} + +declare void @llvm.assume(i1) nounwind + diff --git a/llvm/test/Transforms/InstSimplify/assume.ll b/llvm/test/Transforms/InstSimplify/assume.ll new file mode 100644 index 00000000000..4dd0a8f4a82 --- /dev/null +++ b/llvm/test/Transforms/InstSimplify/assume.ll @@ -0,0 +1,13 @@ +; RUN: opt -instsimplify -S < %s | FileCheck %s + +define void @test1() { + call void @llvm.assume(i1 1) + ret void + +; CHECK-LABEL: @test1 +; CHECK-NOT: llvm.assume +; CHECK: ret void +} + +declare void @llvm.assume(i1) nounwind + diff --git a/llvm/test/Transforms/SimplifyCFG/assume.ll b/llvm/test/Transforms/SimplifyCFG/assume.ll new file mode 100644 index 00000000000..1d1b96a58ed --- /dev/null +++ b/llvm/test/Transforms/SimplifyCFG/assume.ll @@ -0,0 +1,22 @@ +; RUN: opt -simplifycfg -S < %s | FileCheck %s + +define void @test1() { + call void @llvm.assume(i1 0) + ret void + +; CHECK-LABEL: @test1 +; CHECK-NOT: llvm.assume +; CHECK: unreachable +} + +define void @test2() { + call void @llvm.assume(i1 undef) + ret void + +; CHECK-LABEL: @test2 +; CHECK-NOT: llvm.assume +; CHECK: unreachable +} + +declare void @llvm.assume(i1) nounwind + |

