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