From 3bb7eaf72eca331413a21743afa5b67cac50618b Mon Sep 17 00:00:00 2001 From: Sven van Haastregt Date: Wed, 6 Dec 2017 10:11:28 +0000 Subject: [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 --- clang/lib/Basic/TargetInfo.cpp | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) (limited to 'clang/lib/Basic/TargetInfo.cpp') 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(T); - - if (!BT) { - if (isa(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: -- cgit v1.2.3