Skip to content

Commit e7bfd4d

Browse files
committed
[Mem2Reg] Add some single store tests (NFC)
For llvm#97702.
1 parent 2b3b405 commit e7bfd4d

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2+
; RUN: opt -S -passes=mem2reg < %s | FileCheck %s
3+
4+
; FIXME: This is a miscompile.
5+
define i8 @single_store_literal_poison(i1 %cond) {
6+
; CHECK-LABEL: define i8 @single_store_literal_poison(
7+
; CHECK-SAME: i1 [[COND:%.*]]) {
8+
; CHECK-NEXT: br i1 [[COND]], label %[[IF:.*]], label %[[EXIT:.*]]
9+
; CHECK: [[IF]]:
10+
; CHECK-NEXT: br label %[[EXIT]]
11+
; CHECK: [[EXIT]]:
12+
; CHECK-NEXT: ret i8 poison
13+
;
14+
%a = alloca i8, align 1
15+
br i1 %cond, label %if, label %exit
16+
17+
if:
18+
store i8 poison, ptr %a, align 1
19+
br label %exit
20+
21+
exit:
22+
%v = load i8, ptr %a, align 1
23+
ret i8 %v
24+
}
25+
26+
; FIXME: This is a miscompile.
27+
define i8 @single_store_maybe_poison(i1 %cond, i8 %x) {
28+
; CHECK-LABEL: define i8 @single_store_maybe_poison(
29+
; CHECK-SAME: i1 [[COND:%.*]], i8 [[X:%.*]]) {
30+
; CHECK-NEXT: br i1 [[COND]], label %[[IF:.*]], label %[[EXIT:.*]]
31+
; CHECK: [[IF]]:
32+
; CHECK-NEXT: br label %[[EXIT]]
33+
; CHECK: [[EXIT]]:
34+
; CHECK-NEXT: ret i8 [[X]]
35+
;
36+
%a = alloca i8, align 1
37+
br i1 %cond, label %if, label %exit
38+
39+
if:
40+
store i8 %x, ptr %a, align 1
41+
br label %exit
42+
43+
exit:
44+
%v = load i8, ptr %a, align 1
45+
ret i8 %v
46+
}
47+
48+
define i8 @single_store_cant_be_poison(i1 %cond, i8 noundef %x) {
49+
; CHECK-LABEL: define i8 @single_store_cant_be_poison(
50+
; CHECK-SAME: i1 [[COND:%.*]], i8 noundef [[X:%.*]]) {
51+
; CHECK-NEXT: br i1 [[COND]], label %[[IF:.*]], label %[[EXIT:.*]]
52+
; CHECK: [[IF]]:
53+
; CHECK-NEXT: br label %[[EXIT]]
54+
; CHECK: [[EXIT]]:
55+
; CHECK-NEXT: ret i8 [[X]]
56+
;
57+
%a = alloca i8, align 1
58+
br i1 %cond, label %if, label %exit
59+
60+
if:
61+
store i8 %x, ptr %a, align 1
62+
br label %exit
63+
64+
exit:
65+
%v = load i8, ptr %a, align 1
66+
ret i8 %v
67+
}

0 commit comments

Comments
 (0)