summaryrefslogtreecommitdiff
path: root/gcc/stmt.c
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2000-08-22 06:24:13 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2000-08-22 06:24:13 +0000
commit9721a5c3cd2e7d3a3aea2ab2791a6f870346c043 (patch)
treeb198fa1a4b2bc8518ff978411e8d111d61f87cf5 /gcc/stmt.c
parent883e4a547882c2919cef1b8f833ff3c6cdcd4376 (diff)
downloadgcc-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.c12
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