OLD | NEW |
1 ; RUN: opt -flatten-globals %s -S | FileCheck %s | 1 ; RUN: opt -flatten-globals %s -S | FileCheck %s |
2 ; RUN: opt -flatten-globals %s -S | FileCheck %s -check-prefix=CLEANED | 2 ; RUN: opt -flatten-globals %s -S | FileCheck %s -check-prefix=CLEANED |
3 | 3 |
4 target datalayout = "p:32:32:32" | 4 target datalayout = "p:32:32:32" |
5 | 5 |
6 | 6 |
7 ; Check simple cases | 7 ; Check simple cases |
8 | 8 |
9 @var_i32 = global i32 258 | 9 @var_i32 = global i32 258 |
10 ; CHECK: @var_i32 = global [4 x i8] c"\02\01\00\00" | 10 ; CHECK: @var_i32 = global [4 x i8] c"\02\01\00\00" |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 @weak_external_var = extern_weak global i32 | 84 @weak_external_var = extern_weak global i32 |
85 ; CHECK: @weak_external_var = extern_weak global [4 x i8] | 85 ; CHECK: @weak_external_var = extern_weak global [4 x i8] |
86 | 86 |
87 @tls_var = external thread_local global i32 | 87 @tls_var = external thread_local global i32 |
88 ; CHECK: @tls_var = external thread_local global [4 x i8] | 88 ; CHECK: @tls_var = external thread_local global [4 x i8] |
89 | 89 |
90 @aligned_var = global i32 260, align 8 | 90 @aligned_var = global i32 260, align 8 |
91 ; CHECK: @aligned_var = global [4 x i8] c"\04\01\00\00", align 8 | 91 ; CHECK: @aligned_var = global [4 x i8] c"\04\01\00\00", align 8 |
92 | 92 |
93 | 93 |
| 94 ; Check alignment handling |
| 95 |
| 96 @implicit_alignment_i32 = global i32 zeroinitializer |
| 97 ; CHECK: @implicit_alignment_i32 = global [4 x i8] zeroinitializer, align 4 |
| 98 |
| 99 @implicit_alignment_double = global double zeroinitializer |
| 100 ; CHECK: @implicit_alignment_double = global [8 x i8] zeroinitializer, align 8 |
| 101 |
| 102 ; FlattenGlobals is not allowed to increase the alignment of the |
| 103 ; variable when an explicit section is specified (although PNaCl does |
| 104 ; not support this attribute). |
| 105 @lower_alignment_section = global i32 0, section "mysection", align 1 |
| 106 ; CHECK: @lower_alignment_section = global [4 x i8] zeroinitializer, section "my
section", align 1 |
| 107 |
| 108 ; FlattenGlobals could increase the alignment when no section is |
| 109 ; specified, but it does not. |
| 110 @lower_alignment = global i32 0, align 1 |
| 111 ; CHECK: @lower_alignment = global [4 x i8] zeroinitializer, align 1 |
| 112 |
| 113 |
94 ; Check handling of global references | 114 ; Check handling of global references |
95 | 115 |
96 @var1 = external global i32 | 116 @var1 = external global i32 |
97 @var2 = external global i8 | 117 @var2 = external global i8 |
98 | 118 |
99 %ptrs1 = type { i32*, i8*, i32 } | 119 %ptrs1 = type { i32*, i8*, i32 } |
100 @ptrs1 = global %ptrs1 { i32* @var1, i8* null, i32 259 } | 120 @ptrs1 = global %ptrs1 { i32* @var1, i8* null, i32 259 } |
101 ; CHECK: @ptrs1 = global <{ i8*, [8 x i8] }> <{ i8* getelementptr inbounds ([4 x
i8]* @var1, i32 0, i32 0), [8 x i8] c"\00\00\00\00\03\01\00\00" }> | 121 ; CHECK: @ptrs1 = global <{ i8*, [8 x i8] }> <{ i8* getelementptr inbounds ([4 x
i8]* @var1, i32 0, i32 0), [8 x i8] c"\00\00\00\00\03\01\00\00" }> |
102 | 122 |
103 %ptrs2 = type { i32, i32*, i8* } | 123 %ptrs2 = type { i32, i32*, i8* } |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
171 } | 191 } |
172 ; CHECK: define i32* @get_address() { | 192 ; CHECK: define i32* @get_address() { |
173 ; CHECK-NEXT: ret i32* bitcast ([4 x i8]* @var_i32 to i32*) | 193 ; CHECK-NEXT: ret i32* bitcast ([4 x i8]* @var_i32 to i32*) |
174 | 194 |
175 | 195 |
176 define void @func_with_block() { | 196 define void @func_with_block() { |
177 br label %label | 197 br label %label |
178 label: | 198 label: |
179 ret void | 199 ret void |
180 } | 200 } |
OLD | NEW |