diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-08-22 06:24:13 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-08-22 06:24:13 +0000 |
commit | 9721a5c3cd2e7d3a3aea2ab2791a6f870346c043 (patch) | |
tree | b198fa1a4b2bc8518ff978411e8d111d61f87cf5 /gcc/stmt.c | |
parent | 883e4a547882c2919cef1b8f833ff3c6cdcd4376 (diff) | |
download | gcc-9721a5c3cd2e7d3a3aea2ab2791a6f870346c043.tar.gz |
* stmt.c (expand_goto_internal, fixup_gotos): Only check
TYPE_RETURNS_STACK_DEPRESSED for FUNCTION_TYPE.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35865 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/stmt.c')
-rw-r--r-- | gcc/stmt.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/stmt.c b/gcc/stmt.c index 6ecfcd2263b..7ea077dd9ec 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -907,8 +907,10 @@ expand_goto_internal (body, label, last_insn) /* Don't do this adjust if it's to the end label and this function is to return with a depressed stack pointer. */ if (label == return_label - && (TYPE_RETURNS_STACK_DEPRESSED - (TREE_TYPE (current_function_decl)))) + && (((TREE_CODE (TREE_TYPE (current_function_decl)) + == FUNCTION_TYPE) + && (TYPE_RETURNS_STACK_DEPRESSED + (TREE_TYPE (current_function_decl)))))) ; else emit_stack_restore (SAVE_BLOCK, stack_level, NULL_RTX); @@ -1192,8 +1194,10 @@ fixup_gotos (thisblock, stack_level, cleanup_list, first_insn, dont_jump_in) jump jumps out of. */ if (f->stack_level && ! (f->target_rtl == return_label - && (TYPE_RETURNS_STACK_DEPRESSED - (TREE_TYPE (current_function_decl))))) + && ((TREE_CODE (TREE_TYPE (current_function_decl)) + == FUNCTION_TYPE) + && (TYPE_RETURNS_STACK_DEPRESSED + (TREE_TYPE (current_function_decl)))))) emit_stack_restore (SAVE_BLOCK, f->stack_level, f->before_jump); /* Finish up the sequence containing the insns which implement the |