/* Perform doloop optimizations
- Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation,
- Inc.
+ Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010
+ Free Software Foundation, Inc.
Based on code by Michael P. Hayes (m.hayes@elec.canterbury.ac.nz)
This file is part of GCC.
#include "expr.h"
#include "hard-reg-set.h"
#include "basic-block.h"
+#include "diagnostic-core.h"
#include "toplev.h"
#include "tm_p.h"
#include "cfgloop.h"
if (GET_CODE (pattern) != PARALLEL)
{
rtx cond;
+ rtx prev_insn = prev_nondebug_insn (doloop_pat);
/* We expect the decrement to immediately precede the branch. */
- if ((PREV_INSN (doloop_pat) == NULL_RTX)
- || !INSN_P (PREV_INSN (doloop_pat)))
+ if (prev_insn == NULL_RTX || !INSN_P (prev_insn))
return 0;
cmp = pattern;
op0 = force_operand (op0, NULL_RTX);
op1 = force_operand (op1, NULL_RTX);
label = block_label (dest);
- do_compare_rtx_and_jump (op0, op1, code, 0, mode, NULL_RTX, NULL_RTX, label);
+ do_compare_rtx_and_jump (op0, op1, code, 0, mode, NULL_RTX,
+ NULL_RTX, label, -1);
jump = get_last_insn ();
if (!jump || !JUMP_P (jump))