llvm::FunctionType *FnTy = llvm::FunctionType::get(RetTy, false);
llvm::Function *Wrapper = llvm::Function::Create(
- FnTy, getThreadLocalWrapperLinkage(Var->getLinkage()), WrapperName.str(),
- &CGM.getModule());
+ FnTy, getThreadLocalWrapperLinkage(
+ CGM.getLLVMLinkageVarDefinition(VD, /*isConstant=*/false)),
+ WrapperName.str(), &CGM.getModule());
// Always resolve references to the wrapper at link time.
Wrapper->setVisibility(llvm::GlobalValue::HiddenVisibility);
return Wrapper;
return this->n;
}
+namespace {
+thread_local int anon_i{1};
+}
+void set_anon_i() {
+ anon_i = 2;
+}
+// CHECK-LABEL: define internal hidden i32* @_ZTWN12_GLOBAL__N_16anon_iE()
+
// CHECK: define {{.*}} @[[V_M_INIT:.*]]()
// CHECK: load i8* bitcast (i64* @_ZGVN1VIiE1mE to i8*)
// CHECK: %[[V_M_INITIALIZED:.*]] = icmp eq i8 %{{.*}}, 0