|
1 | 1 | ; RUN: opt -global-merge -global-merge-max-offset=100 -S -o - %s | FileCheck %s
|
2 | 2 | ; RUN: opt -passes='global-merge<max-offset=100>' -S -o - %s | FileCheck %s
|
3 | 3 |
|
4 |
| -; NOTE: This is a copy of the llvm/test/Transforms/GlobalMerge/used.ll test, |
| 4 | +; NOTE: This is a copy of the llvm/test/Transforms/GlobalMerge/basic.ll test, |
5 | 5 | ; using `private` global variables instead of `internal`. This is to show that
|
6 | 6 | ; that private globals can be merged in the GlobalMerge pass.
|
7 | 7 |
|
8 | 8 | target datalayout = "e-p:64:64"
|
9 | 9 | target triple = "x86_64-unknown-linux-gnu"
|
10 | 10 |
|
11 |
| -; CHECK: @_MergedGlobals = private global <{ i32, i32 }> <{ i32 3, i32 3 }>, align 4 |
| 11 | +; CHECK: @_MergedGlobals = private global <{ i32, i32 }> <{ i32 1, i32 2 }>, align 4 |
| 12 | +; CHECK: @_MergedGlobals.1 = private global <{ i32, i32 }> <{ i32 3, i32 4 }>, section "foo", align 4 |
12 | 13 |
|
| 14 | +; CHECK-DAG: @a = private alias i32, ptr @_MergedGlobals{{$}} |
13 | 15 | @a = private global i32 1
|
| 16 | + |
| 17 | +; CHECK-DAG: @b = private alias i32, getelementptr inbounds (<{ i32, i32 }>, ptr @_MergedGlobals, i32 0, i32 1) |
14 | 18 | @b = private global i32 2
|
15 |
| -@c = private global i32 3 |
16 |
| -@d = private global i32 3 |
17 | 19 |
|
18 |
| -@llvm.used = appending global [1 x ptr] [ptr @a], section "llvm.metadata" |
19 |
| -@llvm.compiler.used = appending global [1 x ptr] [ptr @b], section "llvm.metadata" |
| 20 | +; CHECK-DAG: @c = private alias i32, ptr @_MergedGlobals.1{{$}} |
| 21 | +@c = private global i32 3, section "foo" |
| 22 | + |
| 23 | +; CHECK-DAG: @d = private alias i32, getelementptr inbounds (<{ i32, i32 }>, ptr @_MergedGlobals.1, i32 0, i32 1) |
| 24 | +@d = private global i32 4, section "foo" |
20 | 25 |
|
21 | 26 | define void @use_private() {
|
22 |
| - ; CHECK: load i32, ptr @a |
| 27 | + ; CHECK: load i32, ptr @_MergedGlobals, |
23 | 28 | %x = load i32, ptr @a
|
24 |
| - ; CHECK: load i32, ptr @b |
| 29 | + ; CHECK: load i32, ptr getelementptr inbounds (<{ i32, i32 }>, ptr @_MergedGlobals, i32 0, i32 1) |
25 | 30 | %y = load i32, ptr @b
|
26 |
| - ; CHECK: load i32, ptr @_MergedGlobals |
| 31 | + ; CHECK: load i32, ptr @_MergedGlobals.1 |
27 | 32 | %z1 = load i32, ptr @c
|
28 |
| - ; CHECK: load i32, ptr getelementptr inbounds (<{ i32, i32 }>, ptr @_MergedGlobals, i32 0, i32 1) |
| 33 | + ; CHECK: load i32, ptr getelementptr inbounds (<{ i32, i32 }>, ptr @_MergedGlobals.1, i32 0, i32 1) |
29 | 34 | %z2 = load i32, ptr @d
|
30 | 35 | ret void
|
31 | 36 | }
|
0 commit comments