zahiraam marked an inline comment as done. zahiraam added inline comments.
================ Comment at: clang/lib/CodeGen/CodeGenModule.cpp:5009 + if (isStaticInit(D, getLangOpts()) && NeedsGlobalCtor && NeedsGlobalDtor) { + EmitCXXCtorInit(D, GV, true, 201, llvm::StringLiteral("ctor"), false); + EmitCXXCtorInit(D, GV, false, 65535, llvm::StringLiteral("dtor"), true); ---------------- efriedma wrote: > zahiraam wrote: > > efriedma wrote: > > > I think you want to use priority 201 whether or not there's a destructor. > > Is that what you mean? > I think it should look something more like this: > > ``` > if (isStaticInit(D, getLangOpts()) { > if (NeedsGlobalCtor) > EmitCXXCtorInit(D, GV, true, 201, llvm::StringLiteral("ctor"), false); > if (NeedsGlobalDtor) > EmitCXXCtorInit(D, GV, false, 65535, llvm::StringLiteral("dtor"), true); > DelayedCXXInitPosition[D] = ~0U; > } else { > EmitCXXGlobalVarDeclInitFunc(D, GV, NeedsGlobalCtor); > } If you agree with the generated IR for this case, then I will start editing the LIT tests accordingly. // CHECK: @"?b@@3UB@@A" = dso_local global %struct.B undef // CHECK: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @dtor, ptr null }] // CHECK: define internal void @dtor() // CHECK: entry: // CHECK: %0 = call i32 @atexit(ptr @"??__Fb@@YAXXZ") // CHECK: ret void // CHECk: define linkonce_odr dso_local x86_thiscallcc void @"??1B@@QAE@XZ" // CHECK: entry: // CHECK: %this.addr = alloca ptr, align 4 // CHECK: store ptr %this, ptr %this.addr, align 4 // CHECK: %this1 = load ptr, ptr %this.addr, align 4 // CHECK: ret void // CHECK: define internal void @"??__Fb@@YAXXZ"() #0 { // CHECK: entry: // CHECK: call x86_thiscallcc void @"??1B@@QAE@XZ"(ptr @"?b@@3UB@@A") // CHECK: ret void struct B { constexpr B() {} ~B() {}; }; constinit B b; The ctor with priority 201 is generated only when tryEmitForInitializer returns a nullptr (that's the only time when NeedsGlobalCtor is set to true). Correct? CHANGES SINCE LAST ACTION https://reviews.llvm.org/D137107/new/ https://reviews.llvm.org/D137107 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits