Commit dc139c90 by Richard Kenner

(gen_{real,imag}part): Extract value from CONCAT directly.

(gen_lowpart_common, gen_highpart): Don't do it here.

From-SVN: r6377
parent 28bad1cb
/* Emit RTL for the GNU C-Compiler expander. /* 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. This file is part of GNU CC.
...@@ -620,12 +620,6 @@ gen_lowpart_common (mode, x) ...@@ -620,12 +620,6 @@ gen_lowpart_common (mode, x)
else else
return gen_rtx (SUBREG, mode, x, word); 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 /* If X is a CONST_INT or a CONST_DOUBLE, extract the appropriate bits
from the low-order part of the constant. */ from the low-order part of the constant. */
else if ((GET_MODE_CLASS (mode) == MODE_INT else if ((GET_MODE_CLASS (mode) == MODE_INT
...@@ -791,7 +785,9 @@ gen_realpart (mode, x) ...@@ -791,7 +785,9 @@ gen_realpart (mode, x)
enum machine_mode mode; enum machine_mode mode;
register rtx x; 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); return gen_highpart (mode, x);
else else
return gen_lowpart (mode, x); return gen_lowpart (mode, x);
...@@ -805,7 +801,9 @@ gen_imagpart (mode, x) ...@@ -805,7 +801,9 @@ gen_imagpart (mode, x)
enum machine_mode mode; enum machine_mode mode;
register rtx x; 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); return gen_lowpart (mode, x);
else else
return gen_highpart (mode, x); return gen_highpart (mode, x);
...@@ -917,12 +915,6 @@ gen_highpart (mode, x) ...@@ -917,12 +915,6 @@ gen_highpart (mode, x)
else else
return gen_rtx (SUBREG, mode, x, word); 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 else
abort (); abort ();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment