xref: /llvm-project/llvm/test/Transforms/GlobalMerge/alignment-2.ll (revision bd9e14574a80d3c022d796d373aa92bdc63f4c26)
1; RUN: opt -global-merge -global-merge-max-offset=100 -S -o - %s | FileCheck %s
2; RUN: opt -passes='global-merge<max-offset=100>' -S -o - %s | FileCheck %s
3
4target datalayout = "e-p:64:64"
5target triple = "x86_64-unknown-linux-gnu"
6
7; This produces align 4, not the obvious align 1, to be consistent with what
8; the AsmPrinter would do.
9; CHECK: @_MergedGlobals = private global <{ [2 x i32], [2 x i32] }> <{ [2 x i32] [i32 1, i32 1], [2 x i32] [i32 2, i32 2] }>, align 4
10
11; CHECK: @a = internal alias [2 x i32], ptr @_MergedGlobals
12@a = internal global [2 x i32] [i32 1, i32 1], align 1
13
14; CHECK: @b = internal alias [2 x i32], getelementptr inbounds (<{ [2 x i32], [2 x i32] }>, ptr @_MergedGlobals, i32 0, i32 1)
15@b = internal global [2 x i32] [i32 2, i32 2], align 1
16
17define void @use() {
18  ; CHECK: load i32, ptr @_MergedGlobals
19  %x = load i32, ptr @a
20  ; CHECK: load i32, ptr getelementptr inbounds (<{ [2 x i32], [2 x i32] }>, ptr @_MergedGlobals, i32 0, i32 1)
21  %y = load i32, ptr @b
22  ret void
23}
24