From 0d541696aa1fce80cf0d521be3e1664391526c28 Mon Sep 17 00:00:00 2001 From: "J\"orn Rennecke" Date: Mon, 22 Jul 2002 14:22:58 +0000 Subject: [PATCH] optabs.c (expand_vector_unop): Don't expand using sub_optab if we got the wrong mode. * optabs.c (expand_vector_unop): Don't expand using sub_optab if we got the wrong mode. From-SVN: r55648 --- gcc/ChangeLog | 5 ++++- gcc/optabs.c | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6e8dfd6e11c..1f413bb8dc0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,7 @@ -Mon Jul 22 15:18:58 2002 J"orn Rennecke +Mon Jul 22 15:21:41 2002 J"orn Rennecke + + * 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. diff --git a/gcc/optabs.c b/gcc/optabs.c index dcb4df5f04b..c2f9863ceb6 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -2049,7 +2049,10 @@ expand_vector_unop (mode, unoptab, op0, target, unsignedp) 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, -- 2.30.2