diff options
author | Chris Lattner <sabre@nondot.org> | 2010-02-08 22:05:38 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-02-08 22:05:38 +0000 |
commit | 3a3134ab12f3aa65f9791f702a73f6d0b2af423f (patch) | |
tree | eba3e238ac4da5bb617cf1d0a8da2196c2630e2e /include/llvm/Support/Casting.h | |
parent | 15b423f7724a0a8ae657f7b66fb090d68008182d (diff) | |
download | llvm-3a3134ab12f3aa65f9791f702a73f6d0b2af423f.tar.gz llvm-3a3134ab12f3aa65f9791f702a73f6d0b2af423f.tar.bz2 llvm-3a3134ab12f3aa65f9791f702a73f6d0b2af423f.tar.xz |
use a c-style cast instead of reinterpret-cast, as sometimes the
cast needs to adjust for a vtable pointer when going from base to
derived type (when the base doesn't have a vtable but the
derived type does).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95585 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Support/Casting.h')
-rw-r--r-- | include/llvm/Support/Casting.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/include/llvm/Support/Casting.h b/include/llvm/Support/Casting.h index 37a7c3b02d..17bcb59905 100644 --- a/include/llvm/Support/Casting.h +++ b/include/llvm/Support/Casting.h @@ -180,8 +180,9 @@ template<class To, class From, class SimpleFrom> struct cast_convert_val { template<class To, class FromTy> struct cast_convert_val<To,FromTy,FromTy> { // This _is_ a simple type, just cast it. static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) { - return reinterpret_cast<typename cast_retty<To, FromTy>::ret_type>( - const_cast<FromTy&>(Val)); + typename cast_retty<To, FromTy>::ret_type Res2 + = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val); + return Res2; } }; |