From 9a0b165cb58cb5cf49cb3a143c302029f389acb2 Mon Sep 17 00:00:00 2001 From: Argyrios Kyrtzidis Date: Fri, 14 Aug 2009 19:01:37 +0000 Subject: [PATCH] Revert r78424. In order for the changes in r78424 to work properly, cast_retty should return an object instead of a reference, and it's not clear that this approach has real advantages. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79023 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/Casting.h | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/include/llvm/Support/Casting.h b/include/llvm/Support/Casting.h index 353611fc121..48988f8a6bb 100644 --- a/include/llvm/Support/Casting.h +++ b/include/llvm/Support/Casting.h @@ -205,9 +205,8 @@ inline typename cast_retty::ret_type cast(const Y &Val) { // accepted. // template -inline typename cast_retty::ret_type cast_or_null(const Y &Val) { - typedef typename cast_retty::ret_type ret_type; - if (!Val) return ret_type(); +inline typename cast_retty::ret_type cast_or_null(Y *Val) { + if (Val == 0) return 0; assert(isa(Val) && "cast_or_null() argument of incompatible type!"); return cast(Val); } @@ -223,8 +222,7 @@ inline typename cast_retty::ret_type cast_or_null(const Y &Val) { template inline typename cast_retty::ret_type dyn_cast(const Y &Val) { - typedef typename cast_retty::ret_type ret_type; - return isa(Val) ? cast(Val) : (ret_type)ret_type(); + return isa(Val) ? cast(Val) : 0; } // dyn_cast_or_null - Functionally identical to dyn_cast, except that a null @@ -232,8 +230,7 @@ inline typename cast_retty::ret_type dyn_cast(const Y &Val) { // template inline typename cast_retty::ret_type dyn_cast_or_null(const Y &Val) { - typedef typename cast_retty::ret_type ret_type; - return (Val && isa(Val)) ? cast(Val) : (ret_type)ret_type(); + return (Val && isa(Val)) ? cast(Val) : 0; }