* optabs.c (expand_vector_unop): Don't expand using sub_optab
if we got the wrong mode.
From-SVN: r55648
-Mon Jul 22 15:18:58 2002 J"orn Rennecke <joern.rennecke@superh.com>
+Mon Jul 22 15:21:41 2002 J"orn Rennecke <joern.rennecke@superh.com>
+
+ * optabs.c (expand_vector_unop): Don't expand using sub_optab
+ if we got the wrong mode.
* hwint.c (define HOST_WIDE_INT_PRINT_DEC_C): New define.
* genrecog.c (write_switch, write_cond): Use it.
submode = tmode;
}
/* If there is no negate operation, try doing a subtract from zero. */
- if (unoptab == neg_optab && GET_MODE_CLASS (submode) == MODE_INT)
+ if (unoptab == neg_optab && GET_MODE_CLASS (submode) == MODE_INT
+ /* Avoid infinite recursion when an
+ error has left us with the wrong mode. */
+ && GET_MODE (op0) == mode)
{
rtx temp;
temp = expand_binop (mode, sub_optab, CONST0_RTX (mode), op0,