diff options
author | David Tweed <david.tweed@arm.com> | 2013-12-11 13:39:46 +0000 |
---|---|---|
committer | David Tweed <david.tweed@arm.com> | 2013-12-11 13:39:46 +0000 |
commit | e1468322eb41cf2b816860a9a89e6ed26f977f49 (patch) | |
tree | 7eae5823a735d8f4a2daa86bc8bb503ff4bc30e8 /clang/lib/AST/Expr.cpp | |
parent | f403efc3bd6e58ec97497e45a8fdbaf62fac6b3b (diff) | |
download | bcm5719-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.cpp | 7 |
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!"); |