Skip to content

Commit 32126a3

Browse files
committed
[GlobalOpt] Add tests with reads from globals with constant exprs.
1 parent 466217e commit 32126a3

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals all --version 5
2+
; RUN: opt -p globalopt -S %s | FileCheck %s
3+
4+
@G = internal global [2 x i64 ] zeroinitializer
5+
@H = internal global [2 x i64 ] zeroinitializer
6+
7+
;.
8+
; CHECK: @G = internal global [2 x i64] zeroinitializer
9+
; CHECK: @H = internal global [2 x i64] zeroinitializer
10+
;.
11+
define i64 @G_used_by_gep_inttoptr_exprs() {
12+
; CHECK-LABEL: define i64 @G_used_by_gep_inttoptr_exprs() local_unnamed_addr {
13+
; CHECK-NEXT: [[L:%.*]] = load i64, ptr @G, align 8
14+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr getelementptr inbounds nuw (i8, ptr @G, i64 16) to i64), i64 8) to ptr), i64 1
15+
; CHECK-NEXT: [[C:%.*]] = icmp eq ptr [[GEP]], @G
16+
; CHECK-NEXT: [[SEL:%.*]] = select i1 [[C]], i64 [[L]], i64 9
17+
; CHECK-NEXT: ret i64 [[SEL]]
18+
;
19+
%l = load i64, ptr @G, align 8
20+
%gep = getelementptr i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr getelementptr inbounds nuw (i8, ptr @G, i64 16) to i64), i64 8) to ptr), i64 1
21+
%c = icmp eq ptr %gep, @G
22+
%sel = select i1 %c, i64 %l, i64 9
23+
ret i64 %sel
24+
}
25+
26+
define i64 @H_constexpr_stored(ptr %p) {
27+
; CHECK-LABEL: define i64 @H_constexpr_stored(
28+
; CHECK-SAME: ptr [[P:%.*]]) local_unnamed_addr {
29+
; CHECK-NEXT: [[L:%.*]] = load i64, ptr @H, align 8
30+
; CHECK-NEXT: store i64 ptrtoint (ptr getelementptr inbounds nuw (i8, ptr @H, i64 16) to i64), ptr [[P]], align 4
31+
; CHECK-NEXT: ret i64 [[L]]
32+
;
33+
%l = load i64, ptr @H, align 8
34+
store i64 ptrtoint (ptr getelementptr inbounds nuw (i8, ptr @H, i64 16) to i64), ptr %p
35+
ret i64 %l
36+
}

0 commit comments

Comments
 (0)