1; Check that the basic block sections suffix naming does not conflict with __cxx_global_var_init.N naming. 2; How to generate this file: 3;; class A { 4;; public: 5;; A(bool a) { } 6;; }; 7;; 8;; extern bool bar(int); 9;; A g_a(bar(5) ? bar(3) : false), g_b(true); 10;; 11;; $ clang -O1 -emit-llvm -S 12;; 13; __cxx_global_var_init has multiple basic blocks which will produce many sections. 14; RUN: llc < %s -mtriple=x86_64-pc-linux -function-sections -basic-block-sections=all -unique-basic-block-section-names | FileCheck %s 15 16; CHECK-LABEL: __cxx_global_var_init: 17; CHECK-LABEL: __cxx_global_var_init.__part.1: 18; CHECK-LABEL: __cxx_global_var_init.1: 19 20%class.A = type { i8 } 21 22$_ZN1AC2Eb = comdat any 23 24@g_a = dso_local global %class.A zeroinitializer, align 1 25@g_b = dso_local global %class.A zeroinitializer, align 1 26@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_symcollision.cc, i8* null }] 27 28define internal fastcc void @__cxx_global_var_init() unnamed_addr section ".text.startup" { 29entry: 30 %call = call zeroext i1 @_Z3bari(i32 5) 31 br i1 %call, label %cond.true, label %cond.end 32 33cond.true: ; preds = %entry 34 %call1 = call zeroext i1 @_Z3bari(i32 3) 35 br label %cond.end 36 37cond.end: ; preds = %entry, %cond.true 38 %cond = phi i1 [ %call1, %cond.true ], [ false, %entry ] 39 call void @_ZN1AC2Eb(%class.A* nonnull @g_a, i1 zeroext %cond) 40 ret void 41} 42 43declare dso_local zeroext i1 @_Z3bari(i32) local_unnamed_addr 44 45define linkonce_odr dso_local void @_ZN1AC2Eb(%class.A* %this, i1 zeroext %a) unnamed_addr comdat align 2 { 46entry: 47 ret void 48} 49 50define internal fastcc void @__cxx_global_var_init.1() unnamed_addr section ".text.startup" { 51entry: 52 call void @_ZN1AC2Eb(%class.A* nonnull @g_b, i1 zeroext true) 53 ret void 54} 55 56define internal void @_GLOBAL__sub_I_symcollision.cc() section ".text.startup" { 57entry: 58 call fastcc void @__cxx_global_var_init() 59 call fastcc void @__cxx_global_var_init.1() 60 ret void 61} 62