diff options
author | Amy Huang <akhuang@google.com> | 2019-10-24 16:34:25 -0700 |
---|---|---|
committer | Amy Huang <akhuang@google.com> | 2019-12-18 10:41:12 -0800 |
commit | a85f5efd9597d0036f5c347b362cb873bdf51f16 (patch) | |
tree | 7f7d265febf1c6d8d113922c95c3c855722c3c24 /clang/lib/AST/ItaniumMangle.cpp | |
parent | eb1857ce0da481caf82271e6d0c9fc745dfab26f (diff) | |
download | bcm5719-llvm-a85f5efd9597d0036f5c347b362cb873bdf51f16.tar.gz bcm5719-llvm-a85f5efd9597d0036f5c347b362cb873bdf51f16.zip |
Add support for the MS qualifiers __ptr32, __ptr64, __sptr, __uptr.
Summary:
This adds parsing of the qualifiers __ptr32, __ptr64, __sptr, and __uptr and
lowers them to the corresponding address space pointer for 32-bit and 64-bit pointers.
(32/64-bit pointers added in https://reviews.llvm.org/D69639)
A large part of this patch is making these pointers ignore the address space
when doing things like overloading and casting.
https://bugs.llvm.org/show_bug.cgi?id=42359
Reviewers: rnk, rsmith
Subscribers: jholewinski, jvesely, nhaehnle, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D71039
Diffstat (limited to 'clang/lib/AST/ItaniumMangle.cpp')
-rw-r--r-- | clang/lib/AST/ItaniumMangle.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp index 8c87c55c792..0d567edac52 100644 --- a/clang/lib/AST/ItaniumMangle.cpp +++ b/clang/lib/AST/ItaniumMangle.cpp @@ -2301,6 +2301,16 @@ void CXXNameMangler::mangleQualifiers(Qualifiers Quals, const DependentAddressSp case LangAS::cuda_device: ASString = "CUdevice"; break; case LangAS::cuda_constant: ASString = "CUconstant"; break; case LangAS::cuda_shared: ASString = "CUshared"; break; + // <ptrsize-addrspace> ::= [ "ptr32_sptr" | "ptr32_uptr" | "ptr64" ] + case LangAS::ptr32_sptr: + ASString = "ptr32_sptr"; + break; + case LangAS::ptr32_uptr: + ASString = "ptr32_uptr"; + break; + case LangAS::ptr64: + ASString = "ptr64"; + break; } } if (!ASString.empty()) |