OLD | NEW |
(Empty) | |
| 1 ; RUN: opt < %s -nacl-global-cleanup -S | FileCheck %s |
| 2 ; RUN: opt < %s -nacl-global-cleanup -S | FileCheck -check-prefix=GV %s |
| 3 |
| 4 @llvm.compiler.used = appending global [0 x i8*] zeroinitializer, section "llvm.
metadata" |
| 5 @llvm.used = appending global [0 x i8*] zeroinitializer, section "llvm.metadata" |
| 6 |
| 7 ; GV-NOT: llvm.used |
| 8 ; GV-NOT: llvm.compiler.used |
| 9 |
| 10 @extern_weak_const = extern_weak constant i32 |
| 11 @extern_weak_gv = extern_weak global i32 |
| 12 |
| 13 ; GV-NOT: @extern_weak_const |
| 14 ; GV-NOT: @extern_weak_gv |
| 15 |
| 16 ; CHECK: @weak_gv = internal global |
| 17 @weak_gv = weak global i32 0 |
| 18 |
| 19 ; CHECK: define void @_start |
| 20 define void @_start() { |
| 21 ret void |
| 22 } |
| 23 |
| 24 define i32* @ewgv() { |
| 25 ; CHECK: %bc = getelementptr i8* null, i32 0 |
| 26 %bc = getelementptr i8* bitcast (i32* @extern_weak_gv to i8*), i32 0 |
| 27 ; CHECK: ret i32* null |
| 28 ret i32* @extern_weak_gv |
| 29 } |
| 30 |
| 31 define i32* @ewc() { |
| 32 ; CHECK: %bc = getelementptr i8* null, i32 0 |
| 33 %bc = getelementptr i8* bitcast (i32* @extern_weak_const to i8*), i32 0 |
| 34 ; CHECK: ret i32* null |
| 35 ret i32* @extern_weak_gv |
| 36 } |
| 37 |
| 38 ; Make sure @weak_gv is actually used. |
| 39 define i32* @wgv() { |
| 40 ; CHECK: ret i32* @weak_gv |
| 41 ret i32* @weak_gv |
| 42 } |
| 43 |
| 44 ; GV-NOT: @extern_weak_func |
| 45 declare extern_weak i32 @extern_weak_func() |
| 46 ; CHECK: @ewf |
| 47 define i32 @ewf() { |
| 48 ; CHECK: %ret = call i32 null() |
| 49 %ret = call i32 @extern_weak_func() |
| 50 ret i32 %ret |
| 51 } |
| 52 |
| 53 ; CHECK: define internal void @weak_func |
| 54 define weak void @weak_func() { |
| 55 ret void |
| 56 } |
OLD | NEW |