diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-01-10 19:32:57 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-01-10 19:32:57 -0500 |
commit | dc139c902a1d756ca394150ac5c78c7ead83835a (patch) | |
tree | 4ef20c07d5fc140ba78bf758543809dee55febd6 /gcc | |
parent | 28bad1cbc3d2c0d2b942296e4f32ff32bc6701b5 (diff) | |
download | gcc-dc139c902a1d756ca394150ac5c78c7ead83835a.zip gcc-dc139c902a1d756ca394150ac5c78c7ead83835a.tar.gz gcc-dc139c902a1d756ca394150ac5c78c7ead83835a.tar.bz2 |
(gen_{real,imag}part): Extract value from CONCAT directly.
(gen_lowpart_common, gen_highpart): Don't do it here.
From-SVN: r6377
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/emit-rtl.c | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index de23b08..e59f19e 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 (); } |