This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
loop.c canonical form patch for new_ia32_branch
- To: egcs-patches at egcs dot cygnus dot com
- Subject: loop.c canonical form patch for new_ia32_branch
- From: Stan Cox <scox at cygnus dot com>
- Date: Fri, 23 Jul 1999 18:08:34 -0400
A loop similar to the following yields a non-canonical unrecognized insn.
int level = xlw_menu_level ();
int l = level;
while (level >= 3)
{
--level;
xlw_pop_menu ();
}
menu_move_up ();
if (l > 2)
return 1;
1999-07-19 Stan Cox <scox@cygnus.com>
* loop.c (check_decr_loop): Put bl->initial_value in canonical form.
*** loop.c 1999/06/22 00:13:17 1.197.10.4
--- loop.c 1999/07/23 21:52:52
*************** check_decr_loop (loop_end, insn_count, l
*** 8849,8856 ****
else
{
! bl->initial_value =
! gen_rtx_MINUS (GET_MODE (bl->biv->dest_reg),
! bl->initial_value,
! loop_info->final_value);
}
--- 8849,8862 ----
else
{
! int dummy;
! rtx ext_val_dummy;
!
! bl->initial_value = simplify_giv_expr
! (gen_rtx_MINUS (GET_MODE (bl->biv->dest_reg),
! bl->initial_value,
! loop_info->final_value),
! &ext_val_dummy, &dummy);
! if (GET_CODE (bl->initial_value) == USE)
! bl->initial_value = XEXP (bl->initial_value, 0);
}