Set dso_local for NSConcreteStackBlock.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@327544 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2018-03-14 18:19:26 +00:00
parent ac11dcec21
commit 8c83aac7a1
2 changed files with 5 additions and 5 deletions

View File

@ -2586,11 +2586,11 @@ static void configureBlocksRuntimeObject(CodeGenModule &CGM,
}
}
if (!CGM.getLangOpts().BlocksRuntimeOptional)
return;
if (GV->isDeclaration() && GV->hasExternalLinkage())
if (CGM.getLangOpts().BlocksRuntimeOptional && GV->isDeclaration() &&
GV->hasExternalLinkage())
GV->setLinkage(llvm::GlobalValue::ExternalWeakLinkage);
CGM.setDSOLocal(GV);
}
llvm::Constant *CodeGenModule::getBlockObjectDispose() {

View File

@ -67,7 +67,7 @@ int (*g(void))(void) {
return _Block_copy(^{ ++i; return i; });
}
// CHECK-BLOCKS-IN-BLOCKS-DECL: @_NSConcreteStackBlock = external dllexport global i8*
// CHECK-BLOCKS-IN-BLOCKS-DECL: @_NSConcreteStackBlock = external dso_local dllexport global i8*
// CHECK-BLOCKS-IN-BLOCKS-DEFN: @_NSConcreteStackBlock = common dso_local dllexport global [5 x i32]
// CHECK-BLOCKS-NOT-IN-BLOCKS: @_NSConcreteStackBlock = external dllimport global i8*
// CHECK-BLOCKS-NOT-IN-BLOCKS-EXTERN: @_NSConcreteStackBlock = external dllimport global i8*