@@ -1974,7 +1974,7 @@ CodeGenModule::getFunctionLinkage(GlobalDecl GD) {
1974
1974
return llvm::GlobalValue::InternalLinkage;
1975
1975
}
1976
1976
1977
- return getLLVMLinkageForDeclarator(D, Linkage, /*IsConstantVariable=*/false );
1977
+ return getLLVMLinkageForDeclarator(D, Linkage);
1978
1978
}
1979
1979
1980
1980
llvm::ConstantInt *CodeGenModule::CreateCrossDsoCfiTypeId(llvm::Metadata *MD) {
@@ -3645,6 +3645,7 @@ void CodeGenModule::EmitGlobal(GlobalDecl GD) {
3645
3645
if (MustBeEmitted(Global) && MayBeEmittedEagerly(Global)) {
3646
3646
// Emit the definition if it can't be deferred.
3647
3647
EmitGlobalDefinition(GD);
3648
+ addEmittedDeferredDecl(GD);
3648
3649
return;
3649
3650
}
3650
3651
@@ -3664,7 +3665,6 @@ void CodeGenModule::EmitGlobal(GlobalDecl GD) {
3664
3665
// The value must be emitted, but cannot be emitted eagerly.
3665
3666
assert(!MayBeEmittedEagerly(Global));
3666
3667
addDeferredDeclToEmit(GD);
3667
- EmittedDeferredDecls[MangledName] = GD;
3668
3668
} else {
3669
3669
// Otherwise, remember that we saw a deferred decl with this name. The
3670
3670
// first use of the mangled name will cause it to move into
@@ -4404,7 +4404,6 @@ llvm::Constant *CodeGenModule::GetOrCreateLLVMFunction(
4404
4404
// DeferredDeclsToEmit list, and remove it from DeferredDecls (since we
4405
4405
// don't need it anymore).
4406
4406
addDeferredDeclToEmit(DDI->second);
4407
- EmittedDeferredDecls[DDI->first] = DDI->second;
4408
4407
DeferredDecls.erase(DDI);
4409
4408
4410
4409
// Otherwise, there are cases we have to worry about where we're
@@ -4685,7 +4684,6 @@ CodeGenModule::GetOrCreateLLVMGlobal(StringRef MangledName, llvm::Type *Ty,
4685
4684
// Move the potentially referenced deferred decl to the DeferredDeclsToEmit
4686
4685
// list, and remove it from DeferredDecls (since we don't need it anymore).
4687
4686
addDeferredDeclToEmit(DDI->second);
4688
- EmittedDeferredDecls[DDI->first] = DDI->second;
4689
4687
DeferredDecls.erase(DDI);
4690
4688
}
4691
4689
@@ -5228,8 +5226,7 @@ void CodeGenModule::EmitGlobalVarDefinition(const VarDecl *D,
5228
5226
AddGlobalAnnotations(D, GV);
5229
5227
5230
5228
// Set the llvm linkage type as appropriate.
5231
- llvm::GlobalValue::LinkageTypes Linkage =
5232
- getLLVMLinkageVarDefinition(D, GV->isConstant());
5229
+ llvm::GlobalValue::LinkageTypes Linkage = getLLVMLinkageVarDefinition(D);
5233
5230
5234
5231
// CUDA B.2.1 "The __device__ qualifier declares a variable that resides on
5235
5232
// the device. [...]"
@@ -5422,8 +5419,9 @@ static bool isVarDeclStrongDefinition(const ASTContext &Context,
5422
5419
return false;
5423
5420
}
5424
5421
5425
- llvm::GlobalValue::LinkageTypes CodeGenModule::getLLVMLinkageForDeclarator(
5426
- const DeclaratorDecl *D, GVALinkage Linkage, bool IsConstantVariable) {
5422
+ llvm::GlobalValue::LinkageTypes
5423
+ CodeGenModule::getLLVMLinkageForDeclarator(const DeclaratorDecl *D,
5424
+ GVALinkage Linkage) {
5427
5425
if (Linkage == GVA_Internal)
5428
5426
return llvm::Function::InternalLinkage;
5429
5427
@@ -5493,10 +5491,10 @@ llvm::GlobalValue::LinkageTypes CodeGenModule::getLLVMLinkageForDeclarator(
5493
5491
return llvm::GlobalVariable::ExternalLinkage;
5494
5492
}
5495
5493
5496
- llvm::GlobalValue::LinkageTypes CodeGenModule::getLLVMLinkageVarDefinition(
5497
- const VarDecl *VD, bool IsConstant ) {
5494
+ llvm::GlobalValue::LinkageTypes
5495
+ CodeGenModule::getLLVMLinkageVarDefinition( const VarDecl *VD) {
5498
5496
GVALinkage Linkage = getContext().GetGVALinkageForVariable(VD);
5499
- return getLLVMLinkageForDeclarator(VD, Linkage, IsConstant );
5497
+ return getLLVMLinkageForDeclarator(VD, Linkage);
5500
5498
}
5501
5499
5502
5500
/// Replace the uses of a function that was declared with a non-proto type.
@@ -5708,7 +5706,7 @@ void CodeGenModule::EmitAliasDefinition(GlobalDecl GD) {
5708
5706
Aliasee = GetOrCreateLLVMGlobal(AA->getAliasee(), DeclTy, LangAS::Default,
5709
5707
/*D=*/nullptr);
5710
5708
if (const auto *VD = dyn_cast<VarDecl>(GD.getDecl()))
5711
- LT = getLLVMLinkageVarDefinition(VD, D->getType().isConstQualified() );
5709
+ LT = getLLVMLinkageVarDefinition(VD);
5712
5710
else
5713
5711
LT = getFunctionLinkage(GD);
5714
5712
}
@@ -6339,8 +6337,7 @@ ConstantAddress CodeGenModule::GetAddrOfGlobalTemporary(
6339
6337
}
6340
6338
6341
6339
// Create a global variable for this lifetime-extended temporary.
6342
- llvm::GlobalValue::LinkageTypes Linkage =
6343
- getLLVMLinkageVarDefinition(VD, Constant);
6340
+ llvm::GlobalValue::LinkageTypes Linkage = getLLVMLinkageVarDefinition(VD);
6344
6341
if (Linkage == llvm::GlobalVariable::ExternalLinkage) {
6345
6342
const VarDecl *InitVD;
6346
6343
if (VD->isStaticDataMember() && VD->getAnyInitializer(InitVD) &&
0 commit comments