re PR rtl-optimization/22239 (i-cobol.adb:482: error: unrecognizable insn)
PR middle-end/22239 PR target/20126 * loop.c (loop_givs_rescan): Use expand_simple_binop instead of gen_rtx_MINUS to handle non-replaceable (plus ((x) (const)). From-SVN: r101863
This commit is contained in:
parent
b5efa47076
commit
b1b0d9acec
2 changed files with 18 additions and 7 deletions
|
@ -1,3 +1,10 @@
|
|||
2005-07-10 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||
|
||||
PR middle-end/22239
|
||||
PR target/20126
|
||||
* loop.c (loop_givs_rescan): Use expand_simple_binop instead of
|
||||
gen_rtx_MINUS to handle non-replaceable (plus ((x) (const)).
|
||||
|
||||
2005-07-07 Daniel Berlin <dberlin@dberlin.org>
|
||||
|
||||
* tree-ssa-structalias.c (struct variable_info): Heapify complex.
|
||||
|
|
18
gcc/loop.c
18
gcc/loop.c
|
@ -5496,14 +5496,18 @@ loop_givs_rescan (struct loop *loop, struct iv_class *bl, rtx *reg_map)
|
|||
v->new_reg));
|
||||
else if (GET_CODE (*v->location) == PLUS
|
||||
&& REG_P (XEXP (*v->location, 0))
|
||||
&& REG_P (v->new_reg)
|
||||
&& CONSTANT_P (XEXP (*v->location, 1)))
|
||||
loop_insn_emit_before (loop, 0, v->insn,
|
||||
gen_move_insn (XEXP (*v->location, 0),
|
||||
gen_rtx_MINUS
|
||||
(GET_MODE (*v->location),
|
||||
v->new_reg,
|
||||
XEXP (*v->location, 1))));
|
||||
{
|
||||
rtx tem;
|
||||
start_sequence ();
|
||||
tem = expand_simple_binop (GET_MODE (*v->location), MINUS,
|
||||
v->new_reg, XEXP (*v->location, 1),
|
||||
NULL_RTX, 0, OPTAB_LIB_WIDEN);
|
||||
emit_move_insn (XEXP (*v->location, 0), tem);
|
||||
tem = get_insns ();
|
||||
end_sequence ();
|
||||
loop_insn_emit_before (loop, 0, v->insn, tem);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* If it wasn't a reg, create a pseudo and use that. */
|
||||
|
|
Loading…
Add table
Reference in a new issue