summaryrefslogtreecommitdiff
path: root/gcc/function.h
diff options
context:
space:
mode:
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2003-12-05 06:46:35 +0000
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2003-12-05 06:46:35 +0000
commit62380d2d2b9987a915182461cbaf4c984c8ed0bb (patch)
treead0e21ca2e7c1cb2a9d00489abf7bf7d0bc9fb0e /gcc/function.h
parentece183a2fa210842cfdd885b258222b8962fa98b (diff)
downloadgcc-62380d2d2b9987a915182461cbaf4c984c8ed0bb.tar.gz
PR middle-end/11151
* function.h (struct function): New field 'x_naked_return_label'. * function.c (free_after_compilation): Set it to NULL. (expand_function_end): Emit 'naked_return_label' if it exists. * rtl.h (expand_naked_return): Declare. * stmt.c (expand_naked_return): New function to generate a jump to 'naked_return_label'. * builtins.c (expand_builtin_return): Call expand_naked_return instead of expand_null_return. * config/sparc/sparc.md (untyped_return): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@74312 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/function.h')
-rw-r--r--gcc/function.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/function.h b/gcc/function.h
index 3aad05a4eea..89a1465ad0a 100644
--- a/gcc/function.h
+++ b/gcc/function.h
@@ -270,6 +270,11 @@ struct function GTY(())
on machines which require execution of the epilogue on all returns. */
rtx x_return_label;
+ /* Label that will go on the end of function epilogue.
+ Jumping to this label serves as a "naked return" instruction
+ on machines which require execution of the epilogue on all returns. */
+ rtx x_naked_return_label;
+
/* Label and register for unswitching computed gotos. */
rtx computed_goto_common_label;
rtx computed_goto_common_reg;
@@ -566,6 +571,7 @@ extern int trampolines_created;
#define parm_reg_stack_loc (cfun->x_parm_reg_stack_loc)
#define cleanup_label (cfun->x_cleanup_label)
#define return_label (cfun->x_return_label)
+#define naked_return_label (cfun->x_naked_return_label)
#define save_expr_regs (cfun->x_save_expr_regs)
#define stack_slot_list (cfun->x_stack_slot_list)
#define parm_birth_insn (cfun->x_parm_birth_insn)