1 ; RUN: opt %s -mtriple=aarch64-none-linux-gnu -global-merge -global-merge-on-external -S -o - | FileCheck %s
2 ; RUN: opt %s -mtriple=aarch64-linux-gnuabi -global-merge -global-merge-on-external -S -o - | FileCheck %s
3 ; RUN: opt %s -mtriple=aarch64-apple-ios -global-merge -global-merge-on-external -S -o - | FileCheck %s
5 @x = global i32 0, align 4
6 @y = global i32 0, align 4
7 @z = global i32 0, align 4
9 ; CHECK: @_MergedGlobals_x = global { i32, i32, i32 } zeroinitializer
10 ; CHECK: @x = alias getelementptr inbounds ({ i32, i32, i32 }* @_MergedGlobals_x, i32 0, i32 0)
11 ; CHECK: @y = alias getelementptr inbounds ({ i32, i32, i32 }* @_MergedGlobals_x, i32 0, i32 1)
12 ; CHECK: @z = alias getelementptr inbounds ({ i32, i32, i32 }* @_MergedGlobals_x, i32 0, i32 2)
14 define void @f1(i32 %a1, i32 %a2) {
16 ; CHECK: getelementptr inbounds ({ i32, i32, i32 }* @_MergedGlobals_x, i32 0, i32 0)
17 ; CHECK: getelementptr inbounds ({ i32, i32, i32 }* @_MergedGlobals_x, i32 0, i32 1)
18 store i32 %a1, i32* @x, align 4
19 store i32 %a2, i32* @y, align 4
23 define void @g1(i32 %a1, i32 %a2) {
25 ; CHECK: getelementptr inbounds ({ i32, i32, i32 }* @_MergedGlobals_x, i32 0, i32 1)
26 ; CHECK: getelementptr inbounds ({ i32, i32, i32 }* @_MergedGlobals_x, i32 0, i32 2)
27 store i32 %a1, i32* @y, align 4
28 store i32 %a2, i32* @z, align 4