diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e744b9fabc5..0826135faac 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,10 +1,15 @@ +2007-04-24 Ian Lance Taylor + + * flow.c (elim_reg_cond): Handle a comparison of a subreg. + 2007-04-24 Simon Martin PR diagnostic/25923 * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a diagnostic message is being built. - * tree-pretty-print.c (dump_generic_node): Only write the formatted text - into BUFFER's stream if we are not building a diagnostic message. + * tree-pretty-print.c (dump_generic_node): Only write the + formatted text into BUFFER's stream if we are not building a + diagnostic message. * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to dump_generic_node. * Makefile.in (toplev.o): Depend on tree-pass.h. diff --git a/gcc/flow.c b/gcc/flow.c index 78c23281c6b..5b0249bec97 100644 --- a/gcc/flow.c +++ b/gcc/flow.c @@ -3437,7 +3437,13 @@ elim_reg_cond (rtx x, unsigned int regno) if (COMPARISON_P (x)) { - if (REGNO (XEXP (x, 0)) == regno) + rtx reg; + + reg = XEXP (x, 0); + if (GET_CODE (reg) == SUBREG) + reg = SUBREG_REG (reg); + gcc_assert (REG_P (reg)); + if (REGNO (reg) == regno) return const0_rtx; return x; }