xref: /llvm-project/llvm/test/Transforms/InstSimplify/ConstProp/gep-alias-gep-load.ll (revision 04b944e23050e4e0c6ee983cc9bc17740315ea4f)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -passes=instsimplify -S < %s | FileCheck %s
3
4@a1 = internal alias i32, getelementptr ({[3 x i32]}, ptr @b, i32 0, i32 0, i32 1)
5@a2 = weak alias i32, getelementptr ({[3 x i32]}, ptr @b, i32 0, i32 0, i32 1)
6@b = internal constant {[3 x i32]} {[3 x i32] [i32 2, i32 3, i32 4]}
7
8@c = internal alias i32, getelementptr ({[3 x i32]}, ptr @d, i32 0, i32 0, i32 1)
9@d = weak constant {[3 x i32]} {[3 x i32] [i32 2, i32 3, i32 4]}
10
11define i32 @f() {
12; CHECK-LABEL: @f(
13; CHECK-NEXT:    ret i32 4
14;
15  %a = load i32, ptr getelementptr (i32, ptr @a1, i64 1)
16  ret i32 %a
17}
18
19define i32 @g() {
20; CHECK-LABEL: @g(
21; CHECK-NEXT:    [[A:%.*]] = load i32, ptr getelementptr (i32, ptr @a2, i64 1), align 4
22; CHECK-NEXT:    ret i32 [[A]]
23;
24  %a = load i32, ptr getelementptr (i32, ptr @a2, i64 1)
25  ret i32 %a
26}
27
28define i32 @h() {
29; CHECK-LABEL: @h(
30; CHECK-NEXT:    [[A:%.*]] = load i32, ptr getelementptr (i32, ptr @c, i64 1), align 4
31; CHECK-NEXT:    ret i32 [[A]]
32;
33  %a = load i32, ptr getelementptr (i32, ptr @c, i64 1)
34  ret i32 %a
35}
36