Add support for language-specific address spaces. On top of that,
add support for the OpenCL __private, __local, __constant and __global address spaces, as well as the __read_only, _read_write and __write_only image access specifiers. Patch originally by ARM; language-specific address space support by myself. llvm-svn: 127915
This commit is contained in:
@@ -1060,7 +1060,7 @@ llvm::Constant *CodeGenModule::GetAddrOfGlobalVar(const VarDecl *D,
|
||||
Ty = getTypes().ConvertTypeForMem(ASTTy);
|
||||
|
||||
const llvm::PointerType *PTy =
|
||||
llvm::PointerType::get(Ty, ASTTy.getAddressSpace());
|
||||
llvm::PointerType::get(Ty, getContext().getTargetAddressSpace(ASTTy));
|
||||
|
||||
llvm::StringRef MangledName = getMangledName(D);
|
||||
return GetOrCreateLLVMGlobal(MangledName, PTy, D);
|
||||
@@ -1239,7 +1239,8 @@ void CodeGenModule::EmitGlobalVarDefinition(const VarDecl *D) {
|
||||
// from the type of the global (this happens with unions).
|
||||
if (GV == 0 ||
|
||||
GV->getType()->getElementType() != InitType ||
|
||||
GV->getType()->getAddressSpace() != ASTTy.getAddressSpace()) {
|
||||
GV->getType()->getAddressSpace() !=
|
||||
getContext().getTargetAddressSpace(ASTTy)) {
|
||||
|
||||
// Move the old entry aside so that we'll create a new one.
|
||||
Entry->setName(llvm::StringRef());
|
||||
|
||||
Reference in New Issue
Block a user