summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/TargetInfo.cpp
diff options
context:
space:
mode:
authorSven van Haastregt <sven.vanhaastregt@arm.com>2017-12-06 10:11:28 +0000
committerSven van Haastregt <sven.vanhaastregt@arm.com>2017-12-06 10:11:28 +0000
commit3bb7eaf72eca331413a21743afa5b67cac50618b (patch)
tree0055f970c86016394883c95a7eb2c13c9b1dec07 /clang/lib/Basic/TargetInfo.cpp
parent898eb34b49e7507a3cc5d9e5e56a8601c289bb4b (diff)
downloadbcm5719-llvm-3bb7eaf72eca331413a21743afa5b67cac50618b.tar.gz
bcm5719-llvm-3bb7eaf72eca331413a21743afa5b67cac50618b.zip
[OpenCL] Fix layering violation by getOpenCLTypeAddrSpace
Commit 7ac28eb0a5 / r310911 ("[OpenCL] Allow targets to select address space per type", 2017-08-15) made Basic depend on AST, introducing a circular dependency. Break this dependency by adding the OpenCLTypeKind enum in Basic and map from AST types to this enum in ASTContext. Differential Revision: https://reviews.llvm.org/D40838 llvm-svn: 319883
Diffstat (limited to 'clang/lib/Basic/TargetInfo.cpp')
-rw-r--r--clang/lib/Basic/TargetInfo.cpp21
1 files changed, 5 insertions, 16 deletions
diff --git a/clang/lib/Basic/TargetInfo.cpp b/clang/lib/Basic/TargetInfo.cpp
index 4d7387168e4..ddd292c1b74 100644
--- a/clang/lib/Basic/TargetInfo.cpp
+++ b/clang/lib/Basic/TargetInfo.cpp
@@ -12,7 +12,6 @@
//===----------------------------------------------------------------------===//
#include "clang/Basic/TargetInfo.h"
-#include "clang/AST/Type.h"
#include "clang/Basic/AddressSpaces.h"
#include "clang/Basic/CharInfo.h"
#include "clang/Basic/LangOptions.h"
@@ -357,23 +356,13 @@ bool TargetInfo::initFeatureMap(
return true;
}
-LangAS TargetInfo::getOpenCLTypeAddrSpace(const Type *T) const {
- auto BT = dyn_cast<BuiltinType>(T);
-
- if (!BT) {
- if (isa<PipeType>(T))
- return LangAS::opencl_global;
-
- return LangAS::Default;
- }
-
- switch (BT->getKind()) {
-#define IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) \
- case BuiltinType::Id: \
+LangAS TargetInfo::getOpenCLTypeAddrSpace(OpenCLTypeKind TK) const {
+ switch (TK) {
+ case OCLTK_Image:
+ case OCLTK_Pipe:
return LangAS::opencl_global;
-#include "clang/Basic/OpenCLImageTypes.def"
- case BuiltinType::OCLSampler:
+ case OCLTK_Sampler:
return LangAS::opencl_constant;
default:
OpenPOWER on IntegriCloud