aboutsummaryrefslogtreecommitdiff
path: root/gcc/objc/objc-act.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/objc/objc-act.c')
-rw-r--r--gcc/objc/objc-act.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index 4864592..3e525cf 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -2603,24 +2603,25 @@ receiver_is_class_object (receiver)
* ...check if it is a call to objc_getClass, if so, give it
* special treatment.
*/
- tree exp = 0;
+ tree exp = TREE_OPERAND (receiver, 0);
- if ((exp = TREE_OPERAND (receiver, 0)) && (TREE_CODE (exp) == ADDR_EXPR))
+ if (exp != 0 && (TREE_CODE (exp) == ADDR_EXPR))
{
- if ((exp = TREE_OPERAND (exp, 0)) &&
- (TREE_CODE (exp) == FUNCTION_DECL) && exp == objc_getClass_decl)
+ exp = TREE_OPERAND (exp, 0);
+ if (exp != 0
+ && TREE_CODE (exp) == FUNCTION_DECL && exp == objc_getClass_decl)
{
/* we have a call to objc_getClass! */
- tree arg = 0;
-
- if ((arg = TREE_OPERAND (receiver, 1)) &&
- (TREE_CODE (arg) == TREE_LIST) &&
- (arg = TREE_VALUE (arg)) &&
- (TREE_CODE (arg) == NOP_EXPR) &&
- (arg = TREE_OPERAND (arg, 0)) &&
- (TREE_CODE (arg) == ADDR_EXPR) &&
- (arg = TREE_OPERAND (arg, 0)) &&
- (TREE_CODE (arg) == STRING_CST))
+ tree arg = TREE_OPERAND (receiver, 1);
+
+ if (arg != 0
+ && TREE_CODE (arg) == TREE_LIST
+ && arg = TREE_VALUE (arg)
+ && TREE_CODE (arg) == NOP_EXPR
+ && arg = TREE_OPERAND (arg, 0)
+ && TREE_CODE (arg) == ADDR_EXPR
+ && arg = TREE_OPERAND (arg, 0)
+ && TREE_CODE (arg) == STRING_CST)
/* finally, we have the class name */
return get_identifier (TREE_STRING_POINTER (arg));
}