* dojump.c (do_jump): Copy SUBREGs into a pseudo for comparison.

From-SVN: r65060
This commit is contained in:
Roger Sayle 2003-03-30 23:07:27 +00:00 committed by Roger Sayle
parent c717c5af27
commit 9311f3f613
2 changed files with 13 additions and 4 deletions

View File

@ -1,3 +1,7 @@
2003-03-30 Roger Sayle <roger@eyesopen.com>
* dojump.c (do_jump): Copy SUBREGs into a pseudo for comparison.
2003-03-30 DJ Delorie <dj@redhat.com>
* profile.c (instrument_edges): Make sure any newly created

View File

@ -588,10 +588,15 @@ do_jump (exp, if_false_label, if_true_label)
/* Note swapping the labels gives us not-equal. */
do_jump_by_parts_equality_rtx (temp, if_true_label, if_false_label);
else if (GET_MODE (temp) != VOIDmode)
do_compare_rtx_and_jump (temp, CONST0_RTX (GET_MODE (temp)),
NE, TREE_UNSIGNED (TREE_TYPE (exp)),
GET_MODE (temp), NULL_RTX,
if_false_label, if_true_label);
{
/* The RTL optimizers prefer comparisons against pseudos. */
if (GET_CODE (temp) == SUBREG)
temp = copy_to_reg (temp);
do_compare_rtx_and_jump (temp, CONST0_RTX (GET_MODE (temp)),
NE, TREE_UNSIGNED (TREE_TYPE (exp)),
GET_MODE (temp), NULL_RTX,
if_false_label, if_true_label);
}
else
abort ();
}