diff --git a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp --- a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp +++ b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp @@ -4040,7 +4040,7 @@ ConstantStruct::get(DynamicEnvironment, {DebugIndentionLevelVal}); Constant *DynamicEnvironmentGV = new GlobalVariable( M, DynamicEnvironment, /* IsConstant */ false, - GlobalValue::InternalLinkage, DynamicEnvironmentInitializer, + GlobalValue::WeakODRLinkage, DynamicEnvironmentInitializer, DynamicEnvironmentName, /* InsertBefore */ nullptr, llvm::GlobalValue::NotThreadLocal, DL.getDefaultGlobalsAddressSpace()); @@ -4062,7 +4062,7 @@ }); Twine KernelEnvironmentName = KernelName + "_kernel_environment"; Constant *KernelEnvironmentGV = new GlobalVariable( - M, KernelEnvironment, /* IsConstant */ true, GlobalValue::ExternalLinkage, + M, KernelEnvironment, /* IsConstant */ true, GlobalValue::WeakODRLinkage, KernelEnvironmentInitializer, KernelEnvironmentName, /* InsertBefore */ nullptr, llvm::GlobalValue::NotThreadLocal, DL.getDefaultGlobalsAddressSpace());