summaryrefslogtreecommitdiff
path: root/include/llvm/Support/Casting.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-02-08 22:05:38 +0000
committerChris Lattner <sabre@nondot.org>2010-02-08 22:05:38 +0000
commit3a3134ab12f3aa65f9791f702a73f6d0b2af423f (patch)
treeeba3e238ac4da5bb617cf1d0a8da2196c2630e2e /include/llvm/Support/Casting.h
parent15b423f7724a0a8ae657f7b66fb090d68008182d (diff)
downloadllvm-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.h5
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;
}
};