|
@@ -2625,11 +2625,16 @@ static llvm::GlobalVariable *GenerateStringLiteral(StringRef str,
|
|
llvm::Constant *C =
|
|
llvm::Constant *C =
|
|
llvm::ConstantDataArray::getString(CGM.getLLVMContext(), str, false);
|
|
llvm::ConstantDataArray::getString(CGM.getLLVMContext(), str, false);
|
|
|
|
|
|
|
|
+ // OpenCL v1.1 s6.5.3: a string literal is in the constant address space.
|
|
|
|
+ unsigned AddrSpace = 0;
|
|
|
|
+ if (CGM.getLangOpts().OpenCL)
|
|
|
|
+ AddrSpace = CGM.getContext().getTargetAddressSpace(LangAS::opencl_constant);
|
|
|
|
+
|
|
// Create a global variable for this string
|
|
// Create a global variable for this string
|
|
- llvm::GlobalVariable *GV =
|
|
|
|
- new llvm::GlobalVariable(CGM.getModule(), C->getType(), constant,
|
|
|
|
- llvm::GlobalValue::PrivateLinkage,
|
|
|
|
- C, GlobalName);
|
|
|
|
|
|
+ llvm::GlobalVariable *GV = new llvm::GlobalVariable(
|
|
|
|
+ CGM.getModule(), C->getType(), constant,
|
|
|
|
+ llvm::GlobalValue::PrivateLinkage, C, GlobalName, 0,
|
|
|
|
+ llvm::GlobalVariable::NotThreadLocal, AddrSpace);
|
|
GV->setAlignment(Alignment);
|
|
GV->setAlignment(Alignment);
|
|
GV->setUnnamedAddr(true);
|
|
GV->setUnnamedAddr(true);
|
|
return GV;
|
|
return GV;
|