summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Targets/AMDGPU.h
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/Targets/AMDGPU.h
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/Targets/AMDGPU.h')
-rw-r--r--clang/lib/Basic/Targets/AMDGPU.h23
1 files changed, 8 insertions, 15 deletions
diff --git a/clang/lib/Basic/Targets/AMDGPU.h b/clang/lib/Basic/Targets/AMDGPU.h
index 4cbf0f202ec..a4e070f1cb1 100644
--- a/clang/lib/Basic/Targets/AMDGPU.h
+++ b/clang/lib/Basic/Targets/AMDGPU.h
@@ -14,7 +14,6 @@
#ifndef LLVM_CLANG_LIB_BASIC_TARGETS_AMDGPU_H
#define LLVM_CLANG_LIB_BASIC_TARGETS_AMDGPU_H
-#include "clang/AST/Type.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Basic/TargetOptions.h"
#include "llvm/ADT/StringSet.h"
@@ -258,24 +257,18 @@ public:
}
}
- LangAS getOpenCLTypeAddrSpace(const Type *T) const override {
- auto BT = dyn_cast<BuiltinType>(T);
+ LangAS getOpenCLTypeAddrSpace(OpenCLTypeKind TK) const override {
+ switch (TK) {
+ case OCLTK_Image:
+ return LangAS::opencl_constant;
- if (!BT)
- return TargetInfo::getOpenCLTypeAddrSpace(T);
-
- switch (BT->getKind()) {
-#define IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) \
- case BuiltinType::Id: \
- return LangAS::opencl_constant;
-#include "clang/Basic/OpenCLImageTypes.def"
- case BuiltinType::OCLClkEvent:
- case BuiltinType::OCLQueue:
- case BuiltinType::OCLReserveID:
+ case OCLTK_ClkEvent:
+ case OCLTK_Queue:
+ case OCLTK_ReserveID:
return LangAS::opencl_global;
default:
- return TargetInfo::getOpenCLTypeAddrSpace(T);
+ return TargetInfo::getOpenCLTypeAddrSpace(TK);
}
}
OpenPOWER on IntegriCloud