+2019-05-14 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * config/rs6000/rs6000-protos.h (rs6000_emit_epilogue): Change
+ arguments.
+ * config/rs6000/rs6000.c (rs6000_emit_epilogue): Change arguments.
+ * config/rs6000/rs6000.md (epilogue_type): New define_enum.
+ (sibcall_epilogue): Adjust.
+ (epilogue): Adjust.
+
2019-05-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* config.gcc: Move *-*-solaris2.10* from obsolete configurations
extern void rs6000_emit_prologue (void);
extern void rs6000_emit_load_toc_table (int);
extern unsigned int rs6000_dbx_register_number (unsigned int, unsigned int);
-extern void rs6000_emit_epilogue (int);
+extern void rs6000_emit_epilogue (enum epilogue_type);
extern void rs6000_expand_split_stack_prologue (void);
extern void rs6000_split_stack_space_check (rtx, rtx);
extern void rs6000_emit_eh_reg_restore (rtx, rtx);
/* Emit function epilogue as insns. */
void
-rs6000_emit_epilogue (int sibcall)
+rs6000_emit_epilogue (enum epilogue_type epilogue_type)
{
+ int sibcall = (epilogue_type == EPILOGUE_TYPE_SIBCALL);
rs6000_stack_t *info;
int restoring_GPRs_inline;
int restoring_FPRs_inline;
UNSPECV_SPEC_BARRIER ; Speculation barrier
])
+; The three different kinds of epilogue.
+(define_enum "epilogue_type" [normal sibcall eh_return])
\f
;; Define an insn type attribute. This is used in function unit delay
;; computations.
{
if (!TARGET_SCHED_PROLOG)
emit_insn (gen_blockage ());
- rs6000_emit_epilogue (TRUE);
+ rs6000_emit_epilogue (EPILOGUE_TYPE_SIBCALL);
DONE;
})
{
if (!TARGET_SCHED_PROLOG)
emit_insn (gen_blockage ());
- rs6000_emit_epilogue (FALSE);
+ rs6000_emit_epilogue (EPILOGUE_TYPE_NORMAL);
DONE;
})