xref: /llvm-project/llvm/test/Transforms/GlobalOpt/globalsra-recursive.ll (revision d586bd5ca231a6022f439d4c6e43cfeeb53eb1d6)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -S -passes=globalopt < %s | FileCheck %s
3
4; Make sure we don't recursively SRA if there are aggregate load/stores with
5; the same type as the global.
6
7@g = internal global { i32, i32 } undef
8
9define void @test() {
10; CHECK-LABEL: @test(
11; CHECK-NEXT:    store { i32, i32 } zeroinitializer, ptr @g, align 4
12; CHECK-NEXT:    store { i32, i32 } { i32 0, i32 1 }, ptr @g, align 4
13; CHECK-NEXT:    ret void
14;
15  store { i32, i32 } zeroinitializer, ptr @g
16  store { i32, i32 } { i32 0, i32 1 }, ptr @g
17  ret void
18}
19
20define { i32, i32 } @load() {
21; CHECK-LABEL: @load(
22; CHECK-NEXT:    [[V:%.*]] = load { i32, i32 }, ptr @g, align 4
23; CHECK-NEXT:    ret { i32, i32 } [[V]]
24;
25  %v = load { i32, i32 }, ptr @g
26  ret { i32, i32 } %v
27}
28