1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; Test all the cases where a L label is safe. Removing any entry from 3*9880d681SAndroid Build Coastguard Worker; TargetLoweringObjectFileMachO::isSectionAtomizableBySymbols should cause 4*9880d681SAndroid Build Coastguard Worker; this to fail. 5*9880d681SAndroid Build Coastguard Worker; We also test some noteworthy cases that require an l label. 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker@private1 = private unnamed_addr constant [4 x i8] c"zed\00" 8*9880d681SAndroid Build Coastguard Worker; CHECK: .section __TEXT,__cstring,cstring_literals 9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: L_private1: 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker@private2 = private unnamed_addr constant [5 x i16] [i16 116, i16 101, 12*9880d681SAndroid Build Coastguard Worker i16 115, i16 116, i16 0] 13*9880d681SAndroid Build Coastguard Worker; CHECK: .section __TEXT,__ustring 14*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .p2align 1 15*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: l_private2: 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker; There is no dedicated 4 byte strings on MachO. 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker%struct.NSConstantString = type { i32*, i32, i8*, i32 } 20*9880d681SAndroid Build Coastguard Worker@private3 = private constant %struct.NSConstantString { i32* null, i32 1992, i8* null, i32 0 }, section "__DATA,__cfstring" 21*9880d681SAndroid Build Coastguard Worker; CHECK: .section __DATA,__cfstring 22*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .p2align 4 23*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: L_private3: 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker; There is no dedicated 1 or 2 byte constant section on MachO. 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker@private4 = private unnamed_addr constant i32 42 28*9880d681SAndroid Build Coastguard Worker; CHECK: .section __TEXT,__literal4,4byte_literals 29*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .p2align 2 30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: L_private4: 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Worker@private5 = private unnamed_addr constant i64 42 33*9880d681SAndroid Build Coastguard Worker; CHECK: .section __TEXT,__literal8,8byte_literals 34*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .p2align 3 35*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: L_private5: 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker@private6 = private unnamed_addr constant i128 42 38*9880d681SAndroid Build Coastguard Worker; CHECK: .section __TEXT,__literal16,16byte_literals 39*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .p2align 3 40*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: L_private6: 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker%struct._objc_class = type { i8* } 43*9880d681SAndroid Build Coastguard Worker@private7 = private global %struct._objc_class* null, section "__OBJC,__cls_refs,literal_pointers,no_dead_strip" 44*9880d681SAndroid Build Coastguard Worker; CHECK: .section __OBJC,__cls_refs,literal_pointers,no_dead_strip 45*9880d681SAndroid Build Coastguard Worker; CHECK: .p2align 3 46*9880d681SAndroid Build Coastguard Worker; CHECK: L_private7: 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Worker@private8 = private global i32* null, section "__DATA,__nl_symbol_ptr,non_lazy_symbol_pointers" 49*9880d681SAndroid Build Coastguard Worker; CHECK: .section __DATA,__nl_symbol_ptr,non_lazy_symbol_pointers 50*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .p2align 3 51*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: L_private8: 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker@private9 = private global i32* null, section "__DATA,__la_symbol_ptr,lazy_symbol_pointers" 54*9880d681SAndroid Build Coastguard Worker; CHECK: .section __DATA,__la_symbol_ptr,lazy_symbol_pointers 55*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .p2align 3 56*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: L_private9: 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Worker@private10 = private global i32* null, section "__DATA,__mod_init_func,mod_init_funcs" 59*9880d681SAndroid Build Coastguard Worker; CHECK: .section __DATA,__mod_init_func,mod_init_funcs 60*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .p2align 3 61*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: L_private10: 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Worker@private11 = private global i32* null, section "__DATA,__mod_term_func,mod_term_funcs" 64*9880d681SAndroid Build Coastguard Worker; CHECK: .section __DATA,__mod_term_func,mod_term_funcs 65*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .p2align 3 66*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: L_private11: 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker@private12 = private global i32* null, section "__DATA,__foobar,interposing" 69*9880d681SAndroid Build Coastguard Worker; CHECK: .section __DATA,__foobar,interposing 70*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .p2align 3 71*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: L_private12: 72*9880d681SAndroid Build Coastguard Worker 73*9880d681SAndroid Build Coastguard Worker@private13 = private global i32 42, section "__DATA, __objc_classlist, regular, no_dead_strip" 74*9880d681SAndroid Build Coastguard Worker; CHECK: .section __DATA,__objc_classlist,regular,no_dead_strip 75*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .p2align 2 76*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: L_private13: 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Worker@private14 = private global [4 x i8] c"zed\00", section "__TEXT,__objc_classname,cstring_literals" 79*9880d681SAndroid Build Coastguard Worker; CHECK: .section __TEXT,__objc_classname,cstring_literals 80*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: L_private14: 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Worker@private15 = private global [4 x i8] c"zed\00", section "__TEXT,__objc_methname,cstring_literals" 83*9880d681SAndroid Build Coastguard Worker; CHECK: .section __TEXT,__objc_methname,cstring_literals 84*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: L_private15: 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Worker@private16 = private global [4 x i8] c"zed\00", section "__TEXT,__objc_methtype,cstring_literals" 87*9880d681SAndroid Build Coastguard Worker; CHECK: .section __TEXT,__objc_methtype,cstring_literals 88*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: L_private16: 89