From: Richard Kenner Date: Wed, 16 Aug 2000 11:59:03 +0000 (+0000) Subject: calls.c (calls_function_1, [...]): Only test TYPE_RETURNS_STACK_DEPRESSED for FUNCTIO... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=43db0363f18bb6e0c6de7ad1c6138588d90dfaf7;p=gcc.git calls.c (calls_function_1, [...]): Only test TYPE_RETURNS_STACK_DEPRESSED for FUNCTION_TYPE. * calls.c (calls_function_1, expand_call): Only test TYPE_RETURNS_STACK_DEPRESSED for FUNCTION_TYPE. * function.c (thread_prologue_and_epilogue_insns): Likewise. From-SVN: r35743 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0a319c69032..6aa5df572c3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Wed Aug 16 08:10:32 2000 Richard Kenner + + * calls.c (calls_function_1, expand_call): Only test + TYPE_RETURNS_STACK_DEPRESSED for FUNCTION_TYPE. + * function.c (thread_prologue_and_epilogue_insns): Likewise. + 2000-08-16 Richard Henderson * combine.c (simplify_shift_const): Revert previous two diff --git a/gcc/calls.c b/gcc/calls.c index cd4fed72825..2d0d52c40f6 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -281,8 +281,10 @@ calls_function_1 (exp, which) case CALL_EXPR: if (which == 0) return 1; - else if (TYPE_RETURNS_STACK_DEPRESSED - (TREE_TYPE (TREE_TYPE (TREE_OPERAND (exp, 0))))) + else if ((TREE_CODE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (exp, 0)))) + == FUNCTION_TYPE) + && (TYPE_RETURNS_STACK_DEPRESSED + (TREE_TYPE (TREE_TYPE (TREE_OPERAND (exp, 0)))))) return 1; else if (TREE_CODE (TREE_OPERAND (exp, 0)) == ADDR_EXPR && (TREE_CODE (TREE_OPERAND (TREE_OPERAND (exp, 0), 0)) @@ -2195,7 +2197,8 @@ expand_call (exp, target, ignore) flags |= flags_from_decl_or_type (TREE_TYPE (TREE_TYPE (p))); /* Mark if the function returns with the stack pointer depressed. */ - if (TYPE_RETURNS_STACK_DEPRESSED (TREE_TYPE (TREE_TYPE (p)))) + if (TREE_CODE (TREE_TYPE (TREE_TYPE (p))) == FUNCTION_TYPE + && TYPE_RETURNS_STACK_DEPRESSED (TREE_TYPE (TREE_TYPE (p)))) { flags |= ECF_SP_DEPRESSED; flags &= ~ (ECF_PURE | ECF_CONST); diff --git a/gcc/function.c b/gcc/function.c index 975ecdd66d6..7601c94ef36 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -7058,7 +7058,8 @@ thread_prologue_and_epilogue_insns (f) /* If this function returns with the stack depressed, massage the epilogue to actually do that. */ - if (TYPE_RETURNS_STACK_DEPRESSED (TREE_TYPE (current_function_decl))) + if (TREE_CODE (TREE_TYPE (current_function_decl)) == FUNCTION_TYPE + && TYPE_RETURNS_STACK_DEPRESSED (TREE_TYPE (current_function_decl))) keep_stack_depressed (seq); emit_jump_insn (seq);