PointerUnion::getAddrOf() does not need to be template since we can only

use the first pointer type for it. Rename it to getAddrOfPtr1().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152106 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Argyrios Kyrtzidis
2012-03-06 07:14:54 +00:00
parent f0c094b115
commit 0db235a2b0
3 changed files with 16 additions and 9 deletions

View File

@@ -142,16 +142,19 @@ namespace llvm {
return T();
}
/// \brief If the union is set to the first pointer type we can get an
/// address pointing to it.
template <typename T>
PT1 const *getAddrOf() const {
/// \brief If the union is set to the first pointer type get an address
/// pointing to it.
PT1 const *getAddrOfPtr1() const {
return const_cast<PointerUnion *>(this)->getAddrOfPtr1();
}
/// \brief If the union is set to the first pointer type get an address
/// pointing to it.
PT1 *getAddrOfPtr1() {
assert(is<PT1>() && "Val is not the first pointer");
assert(get<PT1>() == Val.getPointer() &&
"Can't get the address because PointerLikeTypeTraits changes the ptr");
T const *can_only_get_address_of_first_pointer_type
= reinterpret_cast<PT1 const *>(Val.getAddrOfPointer());
return can_only_get_address_of_first_pointer_type;
return (PT1 *)Val.getAddrOfPointer();
}
/// Assignment operators - Allow assigning into this union from either