#include "params.h"
#include "target.h"
#include "dumpfile.h"
+#include "loop-unroll.h"
/* This module is used to modify loops with a determinable number of
iterations to use special low-overhead looping instructions.
doloop_valid_p (struct loop *loop, struct niter_desc *desc)
{
basic_block *body = get_loop_body (loop), bb;
- rtx insn;
+ rtx_insn *insn;
unsigned i;
bool result = true;
static bool
add_test (rtx cond, edge *e, basic_block dest)
{
- rtx seq, jump, label;
+ rtx_insn *seq, *jump;
+ rtx label;
enum machine_mode mode;
rtx op0 = XEXP (cond, 0), op1 = XEXP (cond, 1);
enum rtx_code code = GET_CODE (cond);
{
rtx counter_reg;
rtx tmp, noloop = NULL_RTX;
- rtx sequence;
- rtx jump_insn;
+ rtx_insn *sequence;
+ rtx_insn *jump_insn;
rtx jump_label;
int nonneg = 0;
bool increment_count;
doloop_pat = doloop_seq;
if (INSN_P (doloop_pat))
{
- while (NEXT_INSN (doloop_pat) != NULL_RTX)
- doloop_pat = NEXT_INSN (doloop_pat);
- if (!JUMP_P (doloop_pat))
- doloop_pat = NULL_RTX;
+ rtx_insn *doloop_insn = as_a <rtx_insn *> (doloop_pat);
+ while (NEXT_INSN (doloop_insn) != NULL_RTX)
+ doloop_insn = NEXT_INSN (doloop_insn);
+ if (!JUMP_P (doloop_insn))
+ doloop_insn = NULL;
+ doloop_pat = doloop_insn;
}
if (! doloop_pat