+ if (!cconv->omit_fp) {
+ ir_node *fp = be_prolog_get_reg_value(abihelper, fp_reg);
+ ir_node *restore = new_bd_sparc_RestoreZero(NULL, block, fp);
+ arch_irn_add_flags(restore, arch_irn_flags_epilog);
+ arch_set_irn_register(restore, sp_reg);
+ be_epilog_set_reg_value(abihelper, sp_reg, restore);
+ } else {
+ /* epilog code: an incsp */
+ sp = be_epilog_get_reg_value(abihelper, sp_reg);
+ sp = be_new_IncSP(sp_reg, new_block, sp,
+ BE_STACK_FRAME_SIZE_SHRINK, 0);
+ arch_irn_add_flags(sp, arch_irn_flags_epilog);
+ be_epilog_set_reg_value(abihelper, sp_reg, sp);
+ }
+#endif