brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · 8a67685 Raw
62 lines · plain
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 -S12;;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 %s15 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 any23 24@g_a = dso_local global %class.A zeroinitializer, align 125@g_b = dso_local global %class.A zeroinitializer, align 126@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_symcollision.cc, ptr 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.end32 33cond.true:                                        ; preds = %entry34  %call1 = call zeroext i1 @_Z3bari(i32 3)35  br label %cond.end36 37cond.end:                                         ; preds = %entry, %cond.true38  %cond = phi i1 [ %call1, %cond.true ], [ false, %entry ]39  call void @_ZN1AC2Eb(ptr nonnull @g_a, i1 zeroext %cond)40  ret void41}42 43declare dso_local zeroext i1 @_Z3bari(i32) local_unnamed_addr44 45define linkonce_odr dso_local void @_ZN1AC2Eb(ptr %this, i1 zeroext %a) unnamed_addr comdat align 2 {46entry:47  ret void48}49 50define internal fastcc void @__cxx_global_var_init.1() unnamed_addr  section ".text.startup" {51entry:52  call void @_ZN1AC2Eb(ptr nonnull @g_b, i1 zeroext true)53  ret void54}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 void61}62