81 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 22; RUN: opt -S -p=globalopt %s | FileCheck %s3 4 5@llvm.used = appending global [1 x ptr] [ptr @ctor]6@gv0 = internal addrspace(1) global ptr null7@gv1 = internal addrspace(1) global ptr addrspace(3) null8@gv2 = internal addrspace(1) global ptr addrspace(1) null9@gv3 = internal addrspace(1) global ptr addrspace(1) null10 11define internal void @ctor() {12; CHECK-LABEL: define internal void @ctor() {13; CHECK-NEXT: tail call fastcc void @init0(ptr addrspacecast (ptr addrspace(1) null to ptr))14; CHECK-NEXT: tail call fastcc void @init1(ptr addrspacecast (ptr addrspace(3) null to ptr))15; CHECK-NEXT: tail call fastcc void @init2(ptr addrspace(1) addrspacecast (ptr null to ptr addrspace(1)))16; CHECK-NEXT: tail call fastcc void @init3(ptr addrspace(1) addrspacecast (ptr addrspace(2) null to ptr addrspace(1)))17; CHECK-NEXT: ret void18;19 tail call void @init0(ptr addrspacecast (ptr addrspace(1) null to ptr))20 tail call void @init1(ptr addrspacecast (ptr addrspace(3) null to ptr))21 tail call void @init2(ptr addrspace(1) addrspacecast (ptr null to ptr addrspace(1)))22 tail call void @init3(ptr addrspace(1) addrspacecast (ptr addrspace(2) null to ptr addrspace(1)))23 ret void24}25 26define internal void @init0(ptr %T) {27; CHECK-LABEL: define internal fastcc void @init028; CHECK-SAME: (ptr [[T:%.*]]) unnamed_addr {29; CHECK-NEXT: [[LD:%.*]] = load ptr, ptr addrspace(1) @gv0, align 830; CHECK-NEXT: [[CMP:%.*]] = icmp eq ptr [[LD]], null31; CHECK-NEXT: store ptr addrspacecast (ptr addrspace(1) null to ptr), ptr addrspace(1) @gv0, align 832; CHECK-NEXT: ret void33;34 %ld = load ptr, ptr addrspace(1) @gv0, align 835 %cmp = icmp eq ptr %ld, null36 store ptr addrspacecast (ptr addrspace(1) null to ptr), ptr addrspace(1) @gv0, align 837 ret void38}39 40define internal void @init1(ptr %T) {41; CHECK-LABEL: define internal fastcc void @init142; CHECK-SAME: (ptr [[T:%.*]]) unnamed_addr {43; CHECK-NEXT: [[LD:%.*]] = load ptr addrspace(3), ptr addrspace(1) @gv1, align 444; CHECK-NEXT: [[CMP:%.*]] = icmp eq ptr addrspace(3) [[LD]], null45; CHECK-NEXT: store ptr addrspacecast (ptr addrspace(3) null to ptr), ptr addrspace(1) @gv1, align 846; CHECK-NEXT: ret void47;48 %ld = load ptr addrspace(3), ptr addrspace(1) @gv1, align 449 %cmp = icmp eq ptr addrspace(3) %ld, null50 store ptr addrspacecast (ptr addrspace(3) null to ptr), ptr addrspace(1) @gv1, align 851 ret void52}53 54define internal void @init2(ptr addrspace(1) %T) {55; CHECK-LABEL: define internal fastcc void @init256; CHECK-SAME: (ptr addrspace(1) [[T:%.*]]) unnamed_addr {57; CHECK-NEXT: [[LD:%.*]] = load ptr addrspace(1), ptr addrspace(1) @gv2, align 458; CHECK-NEXT: [[CMP:%.*]] = icmp eq ptr addrspace(1) [[LD]], null59; CHECK-NEXT: store ptr addrspace(1) addrspacecast (ptr null to ptr addrspace(1)), ptr addrspace(1) @gv2, align 860; CHECK-NEXT: ret void61;62 %ld = load ptr addrspace(1), ptr addrspace(1) @gv2, align 463 %cmp = icmp eq ptr addrspace(1) %ld, null64 store ptr addrspace(1) addrspacecast (ptr null to ptr addrspace(1)), ptr addrspace(1) @gv2, align 865 ret void66}67 68define internal void @init3(ptr addrspace(1) %T) {69; CHECK-LABEL: define internal fastcc void @init370; CHECK-SAME: (ptr addrspace(1) [[T:%.*]]) unnamed_addr {71; CHECK-NEXT: [[LD:%.*]] = load ptr addrspace(1), ptr addrspace(1) @gv3, align 472; CHECK-NEXT: [[CMP:%.*]] = icmp eq ptr addrspace(1) [[LD]], null73; CHECK-NEXT: store ptr addrspace(1) addrspacecast (ptr addrspace(2) null to ptr addrspace(1)), ptr addrspace(1) @gv3, align 874; CHECK-NEXT: ret void75;76 %ld = load ptr addrspace(1), ptr addrspace(1) @gv3, align 477 %cmp = icmp eq ptr addrspace(1) %ld, null78 store ptr addrspace(1) addrspacecast (ptr addrspace(2) null to ptr addrspace(1)), ptr addrspace(1) @gv3, align 879 ret void80}81