xref: /aosp_15_r20/external/llvm/test/Transforms/GlobalOpt/globalsra-unknown-index.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -globalopt -S | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker; globalopt should not sra the global, because it can't see the index.
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker%struct.X = type { [3 x i32], [3 x i32] }
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker; CHECK: @Y = internal unnamed_addr global [3 x %struct.X] zeroinitializer
8*9880d681SAndroid Build Coastguard Worker@Y = internal global [3 x %struct.X] zeroinitializer
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Worker@addr = external global i8
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Workerdefine void @frob() {
13*9880d681SAndroid Build Coastguard Worker  store i32 1, i32* getelementptr inbounds ([3 x %struct.X], [3 x %struct.X]* @Y, i64 0, i64 0, i32 0, i64 ptrtoint (i8* @addr to i64)), align 4
14*9880d681SAndroid Build Coastguard Worker  ret void
15*9880d681SAndroid Build Coastguard Worker}
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @borf
18*9880d681SAndroid Build Coastguard Worker; CHECK: %a = load
19*9880d681SAndroid Build Coastguard Worker; CHECK: %b = load
20*9880d681SAndroid Build Coastguard Worker; CHECK: add i32 %a, %b
21*9880d681SAndroid Build Coastguard Workerdefine i32 @borf(i64 %i, i64 %j) {
22*9880d681SAndroid Build Coastguard Worker  %p = getelementptr inbounds [3 x %struct.X], [3 x %struct.X]* @Y, i64 0, i64 0, i32 0, i64 0
23*9880d681SAndroid Build Coastguard Worker  %a = load i32, i32* %p
24*9880d681SAndroid Build Coastguard Worker  %q = getelementptr inbounds [3 x %struct.X], [3 x %struct.X]* @Y, i64 0, i64 0, i32 1, i64 0
25*9880d681SAndroid Build Coastguard Worker  %b = load i32, i32* %q
26*9880d681SAndroid Build Coastguard Worker  %c = add i32 %a, %b
27*9880d681SAndroid Build Coastguard Worker  ret i32 %c
28*9880d681SAndroid Build Coastguard Worker}
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @borg
31*9880d681SAndroid Build Coastguard Worker; CHECK: %a = load
32*9880d681SAndroid Build Coastguard Worker; CHECK: %b = load
33*9880d681SAndroid Build Coastguard Worker; CHECK: add i32 %a, %b
34*9880d681SAndroid Build Coastguard Workerdefine i32 @borg(i64 %i, i64 %j) {
35*9880d681SAndroid Build Coastguard Worker  %p = getelementptr inbounds [3 x %struct.X], [3 x %struct.X]* @Y, i64 0, i64 1, i32 0, i64 1
36*9880d681SAndroid Build Coastguard Worker  %a = load i32, i32* %p
37*9880d681SAndroid Build Coastguard Worker  %q = getelementptr inbounds [3 x %struct.X], [3 x %struct.X]* @Y, i64 0, i64 1, i32 1, i64 1
38*9880d681SAndroid Build Coastguard Worker  %b = load i32, i32* %q
39*9880d681SAndroid Build Coastguard Worker  %c = add i32 %a, %b
40*9880d681SAndroid Build Coastguard Worker  ret i32 %c
41*9880d681SAndroid Build Coastguard Worker}
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @borh
44*9880d681SAndroid Build Coastguard Worker; CHECK: %a = load
45*9880d681SAndroid Build Coastguard Worker; CHECK: %b = load
46*9880d681SAndroid Build Coastguard Worker; CHECK: add i32 %a, %b
47*9880d681SAndroid Build Coastguard Workerdefine i32 @borh(i64 %i, i64 %j) {
48*9880d681SAndroid Build Coastguard Worker  %p = getelementptr inbounds [3 x %struct.X], [3 x %struct.X]* @Y, i64 0, i64 2, i32 0, i64 2
49*9880d681SAndroid Build Coastguard Worker  %a = load i32, i32* %p
50*9880d681SAndroid Build Coastguard Worker  %q = getelementptr inbounds [3 x %struct.X], [3 x %struct.X]* @Y, i64 0, i64 2, i32 1, i64 2
51*9880d681SAndroid Build Coastguard Worker  %b = load i32, i32* %q
52*9880d681SAndroid Build Coastguard Worker  %c = add i32 %a, %b
53*9880d681SAndroid Build Coastguard Worker  ret i32 %c
54*9880d681SAndroid Build Coastguard Worker}
55