summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/Expr.cpp
diff options
context:
space:
mode:
authorDavid Tweed <david.tweed@arm.com>2013-12-11 13:39:46 +0000
committerDavid Tweed <david.tweed@arm.com>2013-12-11 13:39:46 +0000
commite1468322eb41cf2b816860a9a89e6ed26f977f49 (patch)
tree7eae5823a735d8f4a2daa86bc8bb503ff4bc30e8 /clang/lib/AST/Expr.cpp
parentf403efc3bd6e58ec97497e45a8fdbaf62fac6b3b (diff)
downloadbcm5719-llvm-e1468322eb41cf2b816860a9a89e6ed26f977f49.tar.gz
bcm5719-llvm-e1468322eb41cf2b816860a9a89e6ed26f977f49.zip
Add front-end infrastructure now address space casts are in LLVM IR.
With the introduction of explicit address space casts into LLVM, there's a need to provide a new cast kind the front-end can create for C/OpenCL/CUDA and code to produce address space casts from those kinds when appropriate. Patch by Michele Scandale! llvm-svn: 197036
Diffstat (limited to 'clang/lib/AST/Expr.cpp')
-rw-r--r--clang/lib/AST/Expr.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp
index 14c8452fb52..4bc455837c7 100644
--- a/clang/lib/AST/Expr.cpp
+++ b/clang/lib/AST/Expr.cpp
@@ -1474,6 +1474,11 @@ bool CastExpr::CastConsistency() const {
assert(getSubExpr()->getType()->isFunctionType());
goto CheckNoBasePath;
+ case CK_AddressSpaceConversion:
+ assert(getType()->isPointerType());
+ assert(getSubExpr()->getType()->isPointerType());
+ assert(getType()->getPointeeType().getAddressSpace() !=
+ getSubExpr()->getType()->getPointeeType().getAddressSpace());
// These should not have an inheritance path.
case CK_Dynamic:
case CK_ToUnion:
@@ -1637,6 +1642,8 @@ const char *CastExpr::getCastKindName() const {
return "BuiltinFnToFnPtr";
case CK_ZeroToOCLEvent:
return "ZeroToOCLEvent";
+ case CK_AddressSpaceConversion:
+ return "AddressSpaceConversion";
}
llvm_unreachable("Unhandled cast kind!");
OpenPOWER on IntegriCloud