From 6e3077c6087cfcf64d814641adc019a2a85c763e Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Fri, 5 Dec 2003 07:46:35 +0100 Subject: re PR middle-end/11151 (__builtin_return(__builtin_apply(...)) gives wrong result) 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. From-SVN: r74312 --- gcc/function.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'gcc/function.h') diff --git a/gcc/function.h b/gcc/function.h index 3aad05a..89a1465 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) -- cgit v1.1