static int h8300_saveall_function_p (tree);
static int h8300_monitor_function_p (tree);
static int h8300_os_task_function_p (tree);
-static void h8300_emit_stack_adjustment (int, HOST_WIDE_INT, bool);
+static void h8300_emit_stack_adjustment (int, HOST_WIDE_INT);
static HOST_WIDE_INT round_frame_size (HOST_WIDE_INT);
static unsigned int compute_saved_regs (void);
static const char *cond_string (enum rtx_code);
SIZE to adjust the stack pointer. */
static void
-h8300_emit_stack_adjustment (int sign, HOST_WIDE_INT size, bool in_prologue)
+h8300_emit_stack_adjustment (int sign, HOST_WIDE_INT size)
{
/* If the frame size is 0, we don't have anything to do. */
if (size == 0)
/* Emit an insn to push register RN. */
static rtx
-push (int rn, bool in_prologue)
+push (int rn)
{
rtx reg = gen_rtx_REG (word_mode, rn);
rtx x;
if (pop_p)
pop (regno);
else
- push (regno, false);
+ push (regno);
return;
}
if (frame_pointer_needed)
{
/* Push fp. */
- push (HARD_FRAME_POINTER_REGNUM, true);
+ push (HARD_FRAME_POINTER_REGNUM);
F (emit_move_insn (hard_frame_pointer_rtx, stack_pointer_rtx), 0);
}
}
/* Leave room for locals. */
- h8300_emit_stack_adjustment (-1, round_frame_size (get_frame_size ()), true);
+ h8300_emit_stack_adjustment (-1, round_frame_size (get_frame_size ()));
if (flag_stack_usage_info)
current_function_static_stack_size
returned_p = false;
/* Deallocate locals. */
- h8300_emit_stack_adjustment (1, frame_size, false);
+ h8300_emit_stack_adjustment (1, frame_size);
/* Pop the saved registers in descending order. */
saved_regs = compute_saved_regs ();
if (!need_flags)
return "adds\t%2,%S0";
+ /* FALLTHRU */
+
case 0xfffffffc:
if (!need_flags)
return "subs\t%G2,%S0";
+ /* FALLTHRU */
+
case 0x00010000:
case 0x00020000:
if (!need_flags)
return "inc.w\t%2,%e0";
}
+ /* FALLTHRU */
+
case 0xffff0000:
case 0xfffe0000:
if (!need_flags)
operands[2] = GEN_INT (intval >> 16);
return "dec.w\t%G2,%e0";
}
+
+ /* FALLTHRU */
+
}
/* See if we can finish with 4 bytes. */
if (!need_flags)
return 2;
+ /* FALLTHRU */
+
case 0xffff0000:
case 0xfffe0000:
if (!need_flags)
return 2;
+
+ /* FALLTHRU */
+
}
/* See if we can finish with 4 bytes. */
else if (type == ASHIFTRT)
return (ar == SHIFT_LOOP
|| (TARGET_H8300H && mode == SImode && count == 8));
+ gcc_unreachable ();
}
/* Output the assembler code for doing shifts. */