From dc139c902a1d756ca394150ac5c78c7ead83835a Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Mon, 10 Jan 1994 19:32:57 -0500 Subject: [PATCH] (gen_{real,imag}part): Extract value from CONCAT directly. (gen_lowpart_common, gen_highpart): Don't do it here. From-SVN: r6377 --- gcc/emit-rtl.c | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index de23b088e82..e59f19ec783 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -1,5 +1,5 @@ /* Emit RTL for the GNU C-Compiler expander. - Copyright (C) 1987, 1988, 1992, 1993 Free Software Foundation, Inc. + Copyright (C) 1987, 1988, 1992, 1993, 1994 Free Software Foundation, Inc. This file is part of GNU CC. @@ -620,12 +620,6 @@ gen_lowpart_common (mode, x) else return gen_rtx (SUBREG, mode, x, word); } - else if (GET_CODE (x) == CONCAT) - { - if (GET_MODE (XEXP (x, 0)) != mode) - abort (); - return XEXP (x, 0); - } /* If X is a CONST_INT or a CONST_DOUBLE, extract the appropriate bits from the low-order part of the constant. */ else if ((GET_MODE_CLASS (mode) == MODE_INT @@ -791,7 +785,9 @@ gen_realpart (mode, x) enum machine_mode mode; register rtx x; { - if (WORDS_BIG_ENDIAN) + if (GET_CODE (x) == CONCAT && GET_MODE (XEXP (x, 0)) == mode) + return XEXP (x, 0); + else if (WORDS_BIG_ENDIAN) return gen_highpart (mode, x); else return gen_lowpart (mode, x); @@ -805,7 +801,9 @@ gen_imagpart (mode, x) enum machine_mode mode; register rtx x; { - if (WORDS_BIG_ENDIAN) + if (GET_CODE (x) == CONCAT && GET_MODE (XEXP (x, 0)) == mode) + return XEXP (x, 1); + else if (WORDS_BIG_ENDIAN) return gen_lowpart (mode, x); else return gen_highpart (mode, x); @@ -917,12 +915,6 @@ gen_highpart (mode, x) else return gen_rtx (SUBREG, mode, x, word); } - else if (GET_CODE (x) == CONCAT) - { - if (GET_MODE (XEXP (x, 1)) != mode) - abort (); - return XEXP (x, 1); - } else abort (); } -- 2.30.2