diff options
author | Sven van Haastregt <sven.vanhaastregt@arm.com> | 2017-12-06 10:11:28 +0000 |
---|---|---|
committer | Sven van Haastregt <sven.vanhaastregt@arm.com> | 2017-12-06 10:11:28 +0000 |
commit | 3bb7eaf72eca331413a21743afa5b67cac50618b (patch) | |
tree | 0055f970c86016394883c95a7eb2c13c9b1dec07 /clang/lib/Basic/TargetInfo.cpp | |
parent | 898eb34b49e7507a3cc5d9e5e56a8601c289bb4b (diff) | |
download | bcm5719-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.cpp | 21 |
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: |