aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-01-10 19:32:57 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1994-01-10 19:32:57 -0500
commitdc139c902a1d756ca394150ac5c78c7ead83835a (patch)
tree4ef20c07d5fc140ba78bf758543809dee55febd6 /gcc
parent28bad1cbc3d2c0d2b942296e4f32ff32bc6701b5 (diff)
downloadgcc-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.c22
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 ();
}