diff options
Diffstat (limited to 'llvm/test/Transforms/InstCombine/invariant.group.ll')
| -rw-r--r-- | llvm/test/Transforms/InstCombine/invariant.group.ll | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/invariant.group.ll b/llvm/test/Transforms/InstCombine/invariant.group.ll new file mode 100644 index 00000000000..697ed5995c7 --- /dev/null +++ b/llvm/test/Transforms/InstCombine/invariant.group.ll @@ -0,0 +1,34 @@ +; RUN: opt -instcombine -S < %s | FileCheck %s + +; CHECK-LABEL: define i8* @simplifyNullLaunder() +define i8* @simplifyNullLaunder() { +; CHECK-NEXT: ret i8* null + %b2 = call i8* @llvm.launder.invariant.group.p0i8(i8* null) + ret i8* %b2 +} + +; CHECK-LABEL: define i8 addrspace(42)* @dontsimplifyNullLaunderForDifferentAddrspace() +define i8 addrspace(42)* @dontsimplifyNullLaunderForDifferentAddrspace() { +; CHECK: %b2 = call i8 addrspace(42)* @llvm.launder.invariant.group.p42i8(i8 addrspace(42)* null) +; CHECK: ret i8 addrspace(42)* %b2 + %b2 = call i8 addrspace(42)* @llvm.launder.invariant.group.p42i8(i8 addrspace(42)* null) + ret i8 addrspace(42)* %b2 +} + +; CHECK-LABEL: define i8* @simplifyUndefLaunder() +define i8* @simplifyUndefLaunder() { +; CHECK-NEXT: ret i8* undef + %b2 = call i8* @llvm.launder.invariant.group.p0i8(i8* undef) + ret i8* %b2 +} + +; CHECK-LABEL: define i8 addrspace(42)* @simplifyUndefLaunder2() +define i8 addrspace(42)* @simplifyUndefLaunder2() { +; CHECK-NEXT: ret i8 addrspace(42)* undef + %b2 = call i8 addrspace(42)* @llvm.launder.invariant.group.p42i8(i8 addrspace(42)* undef) + ret i8 addrspace(42)* %b2 +} + + +declare i8* @llvm.launder.invariant.group.p0i8(i8*) +declare i8 addrspace(42)* @llvm.launder.invariant.group.p42i8(i8 addrspace(42)*) |

