summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenFunction.cpp
diff options
context:
space:
mode:
authorPekka Jaaskelainen <pekka.jaaskelainen@tut.fi>2014-01-09 13:37:30 +0000
committerPekka Jaaskelainen <pekka.jaaskelainen@tut.fi>2014-01-09 13:37:30 +0000
commit3587b32e1cc978d997602d4c0784cdcedda7de3f (patch)
tree22a2c896daeee817f54ffce2fafc8719256b71a3 /clang/lib/CodeGen/CodeGenFunction.cpp
parentaf4480a121473f7218081a38a92562c742b47dc1 (diff)
downloadbcm5719-llvm-3587b32e1cc978d997602d4c0784cdcedda7de3f.tar.gz
bcm5719-llvm-3587b32e1cc978d997602d4c0784cdcedda7de3f.zip
The OpenCL specification states that images are allocated
from the global address space (6.5.1 of the OpenCL 1.2 specification). This makes clang construct the image arguments in the global address space and generate the argument metadata with the correct address space descriptor. Patch by Pedro Ferreira! llvm-svn: 198868
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.cpp')
-rw-r--r--clang/lib/CodeGen/CodeGenFunction.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.cpp b/clang/lib/CodeGen/CodeGenFunction.cpp
index c1e522d0d74..564ea11a8f8 100644
--- a/clang/lib/CodeGen/CodeGenFunction.cpp
+++ b/clang/lib/CodeGen/CodeGenFunction.cpp
@@ -383,7 +383,12 @@ static void GenOpenCLArgMetadata(const FunctionDecl *FD, llvm::Function *Fn,
if (pointeeTy.isVolatileQualified())
typeQuals += typeQuals.empty() ? "volatile" : " volatile";
} else {
- addressQuals.push_back(Builder.getInt32(0));
+ uint32_t AddrSpc = 0;
+ if (ty->isImageType())
+ AddrSpc =
+ CGM.getContext().getTargetAddressSpace(LangAS::opencl_global);
+
+ addressQuals.push_back(Builder.getInt32(AddrSpc));
// Get argument type name.
std::string typeName = ty.getUnqualifiedType().getAsString();
OpenPOWER on IntegriCloud