aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/implicit-null-check-negative.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGen/X86/implicit-null-check-negative.ll')
-rw-r--r--test/CodeGen/X86/implicit-null-check-negative.ll96
1 files changed, 0 insertions, 96 deletions
diff --git a/test/CodeGen/X86/implicit-null-check-negative.ll b/test/CodeGen/X86/implicit-null-check-negative.ll
deleted file mode 100644
index c8d425c3889f..000000000000
--- a/test/CodeGen/X86/implicit-null-check-negative.ll
+++ /dev/null
@@ -1,96 +0,0 @@
-; RUN: llc -mtriple=x86_64-apple-macosx -O3 -debug-only=faultmaps -enable-implicit-null-checks < %s 2>&1 | FileCheck %s
-; REQUIRES: asserts
-
-; List cases where we should *not* be emitting implicit null checks.
-
-; CHECK-NOT: Fault Map Output
-
-define i32 @imp_null_check_load(i32* %x, i32* %y) {
- entry:
- %c = icmp eq i32* %x, null
-; It isn't legal to move the load from %x from "not_null" to here --
-; the store to %y could be aliasing it.
- br i1 %c, label %is_null, label %not_null, !make.implicit !0
-
- is_null:
- ret i32 42
-
- not_null:
- store i32 0, i32* %y
- %t = load i32, i32* %x
- ret i32 %t
-}
-
-define i32 @imp_null_check_gep_load(i32* %x) {
- entry:
- %c = icmp eq i32* %x, null
- br i1 %c, label %is_null, label %not_null, !make.implicit !0
-
- is_null:
- ret i32 42
-
- not_null:
-; null + 5000 * sizeof(i32) lies outside the null page and hence the
-; load to %t cannot be assumed to be reliably faulting.
- %x.gep = getelementptr i32, i32* %x, i32 5000
- %t = load i32, i32* %x.gep
- ret i32 %t
-}
-
-define i32 @imp_null_check_load_no_md(i32* %x) {
-; This is fine, except it is missing the !make.implicit metadata.
- entry:
- %c = icmp eq i32* %x, null
- br i1 %c, label %is_null, label %not_null
-
- is_null:
- ret i32 42
-
- not_null:
- %t = load i32, i32* %x
- ret i32 %t
-}
-
-define i32 @imp_null_check_no_hoist_over_acquire_load(i32* %x, i32* %y) {
-; We cannot hoist %t1 over %t0 since %t0 is an acquire load
- entry:
- %c = icmp eq i32* %x, null
- br i1 %c, label %is_null, label %not_null, !make.implicit !0
-
- is_null:
- ret i32 42
-
- not_null:
- %t0 = load atomic i32, i32* %y acquire, align 4
- %t1 = load i32, i32* %x
- %p = add i32 %t0, %t1
- ret i32 %p
-}
-
-define i32 @imp_null_check_add_result(i32* %x, i32* %y) {
-; This will codegen to:
-;
-; movl (%rsi), %eax
-; addl (%rdi), %eax
-;
-; The load instruction we wish to hoist is the addl, but there is a
-; write-after-write hazard preventing that from happening. We could
-; get fancy here and exploit the commutativity of addition, but right
-; now -implicit-null-checks isn't that smart.
-;
-
- entry:
- %c = icmp eq i32* %x, null
- br i1 %c, label %is_null, label %not_null, !make.implicit !0
-
- is_null:
- ret i32 42
-
- not_null:
- %t0 = load i32, i32* %y
- %t1 = load i32, i32* %x
- %p = add i32 %t0, %t1
- ret i32 %p
-}
-
-!0 = !{}