diff options
Diffstat (limited to 'llvm/include/llvm/CodeGen/DIE.h')
| -rw-r--r-- | llvm/include/llvm/CodeGen/DIE.h | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/llvm/include/llvm/CodeGen/DIE.h b/llvm/include/llvm/CodeGen/DIE.h index c843f3fd1a6..e247d46ba5b 100644 --- a/llvm/include/llvm/CodeGen/DIE.h +++ b/llvm/include/llvm/CodeGen/DIE.h @@ -340,11 +340,11 @@ private: new (reinterpret_cast<void *>(Val.buffer)) T(V); } - template <class T> T &get() { return *reinterpret_cast<T *>(Val.buffer); } - template <class T> const T &get() const { - return *reinterpret_cast<const T *>(Val.buffer); + template <class T> T *get() { return reinterpret_cast<T *>(Val.buffer); } + template <class T> const T *get() const { + return reinterpret_cast<const T *>(Val.buffer); } - template <class T> void destruct() { get<T>().~T(); } + template <class T> void destruct() { get<T>()->~T(); } /// Destroy the underlying value. /// @@ -378,11 +378,11 @@ private: return; #define HANDLE_DIEVALUE_SMALL(T) \ case is##T: \ - construct<DIE##T>(X.get<DIE##T>()); \ + construct<DIE##T>(*X.get<DIE##T>()); \ return; #define HANDLE_DIEVALUE_LARGE(T) \ case is##T: \ - construct<const DIE##T *>(X.get<const DIE##T *>()); \ + construct<const DIE##T *>(*X.get<const DIE##T *>()); \ return; #include "llvm/CodeGen/DIEValue.def" } @@ -425,12 +425,12 @@ public: #define HANDLE_DIEVALUE_SMALL(T) \ const DIE##T &getDIE##T() const { \ assert(getType() == is##T && "Expected " #T); \ - return get<DIE##T>(); \ + return *get<DIE##T>(); \ } #define HANDLE_DIEVALUE_LARGE(T) \ const DIE##T &getDIE##T() const { \ assert(getType() == is##T && "Expected " #T); \ - return *get<const DIE##T *>(); \ + return **get<const DIE##T *>(); \ } #include "llvm/CodeGen/DIEValue.def" |

