diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2000-08-16 11:59:03 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2000-08-16 07:59:03 -0400 |
commit | 43db0363f18bb6e0c6de7ad1c6138588d90dfaf7 (patch) | |
tree | f52f5b59263e90bcf12f1bfd831bf0ede843f644 /gcc/calls.c | |
parent | 853d88280aa4989f22b716b55f80b0d36ae5fc27 (diff) | |
download | gcc-43db0363f18bb6e0c6de7ad1c6138588d90dfaf7.zip gcc-43db0363f18bb6e0c6de7ad1c6138588d90dfaf7.tar.gz gcc-43db0363f18bb6e0c6de7ad1c6138588d90dfaf7.tar.bz2 |
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
Diffstat (limited to 'gcc/calls.c')
-rw-r--r-- | gcc/calls.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/calls.c b/gcc/calls.c index cd4fed7..2d0d52c 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); |