1; RUN: opt -passes=globalopt -S < %s | FileCheck %s 2 3@a = internal global i32 0, align 4 4@b = internal global i32 0, align 4 5@c = internal global i32 0, align 4 6@d = internal constant [4 x i8] c"foo\00", align 1 7@e = linkonce_odr global i32 0 8@f = internal addrspace(3) global float undef, align 4 9 10; CHECK: @a = internal global i32 0, align 4 11; CHECK: @b = internal global i32 0, align 4 12; CHECK: @c = internal unnamed_addr global i32 0, align 4 13; CHECK: @d = internal unnamed_addr constant [4 x i8] c"foo\00", align 1 14; CHECK: @e = linkonce_odr local_unnamed_addr global i32 0 15; CHECK: @f = internal unnamed_addr addrspace(3) global float undef, align 4 16 17; CHECK: define internal fastcc void @used_internal() unnamed_addr { 18define internal void @used_internal() { 19 ret void 20} 21 22define i32 @get_e() { 23 call void @used_internal() 24 %t = load i32, ptr @e 25 ret i32 %t 26} 27 28define void @set_e(i32 %x) { 29 store i32 %x, ptr @e 30 ret void 31} 32 33define i1 @bah(i64 %i) nounwind readonly optsize ssp { 34entry: 35 %arrayidx4 = getelementptr inbounds [4 x i8], ptr @d, i64 0, i64 %i 36 %tmp5 = load i8, ptr %arrayidx4, align 1 37 %tmp6 = load i8, ptr @d, align 1 38 %cmp = icmp eq i8 %tmp5, %tmp6 39 ret i1 %cmp 40} 41 42define void @baz(i32 %x) { 43entry: 44 store i32 %x, ptr @a, align 4 45 store i32 %x, ptr @b, align 4 46 store i32 %x, ptr @c, align 4 47 ret void 48} 49 50define i32 @foo(ptr %x) nounwind readnone optsize ssp { 51entry: 52 %cmp = icmp eq ptr %x, @a 53 %conv = zext i1 %cmp to i32 54 ret i32 %conv 55} 56 57define i32 @bar() { 58entry: 59 switch i64 ptrtoint (ptr @b to i64), label %sw.epilog [ 60 i64 1, label %return 61 i64 0, label %return 62 ] 63 64sw.epilog: 65 ret i32 0 66 67return: 68 ret i32 1 69} 70 71define i32 @zed() { 72entry: 73 %tmp1 = load i32, ptr @c, align 4 74 ret i32 %tmp1 75} 76 77define float @use_addrspace_cast_for_load() { 78 %p = addrspacecast ptr addrspace(3) @f to ptr 79 %v = load float, ptr %p 80 ret float %v 81} 82 83define void @use_addrspace_cast_for_store(float %x) { 84 %p = addrspacecast ptr addrspace(3) @f to ptr 85 store float %x, ptr %p 86 ret void 87} 88