diff options
author | obrien <obrien@FreeBSD.org> | 2002-07-03 23:35:06 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 2002-07-03 23:35:06 +0000 |
commit | e75eef45ae6dbc3fe7fb52ca0a3f52f31b7505f5 (patch) | |
tree | c4f9761c329e9bc55de1ed104d6feb30e9b307fd /contrib/gcc/emit-rtl.c | |
parent | f35ff6abcc8f8e99fa4fe81d049b48beb7f38779 (diff) | |
download | FreeBSD-src-e75eef45ae6dbc3fe7fb52ca0a3f52f31b7505f5.zip FreeBSD-src-e75eef45ae6dbc3fe7fb52ca0a3f52f31b7505f5.tar.gz |
Allow XFree86-4 to build
by not creating paradoxical FLOAT_MODE subregs.
Tested by: se
Obtained from: http://gcc.gnu.org/ml/gcc/2002-06/msg01709.html
Diffstat (limited to 'contrib/gcc/emit-rtl.c')
-rw-r--r-- | contrib/gcc/emit-rtl.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/contrib/gcc/emit-rtl.c b/contrib/gcc/emit-rtl.c index f6c6761..78f729a 100644 --- a/contrib/gcc/emit-rtl.c +++ b/contrib/gcc/emit-rtl.c @@ -19,6 +19,8 @@ along with GCC; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* $FreeBSD$ */ + /* Middle-to-low level generation of rtx code and insns. @@ -831,6 +833,11 @@ gen_lowpart_common (mode, x) > ((xsize + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD))) return 0; + /* Don't allow generating paradoxical FLOAT_MODE subregs. */ + if (GET_MODE_CLASS (mode) == MODE_FLOAT + && GET_MODE (x) != VOIDmode && msize > xsize) + return 0; + offset = subreg_lowpart_offset (mode, GET_MODE (x)); if ((GET_CODE (x) == ZERO_EXTEND || GET_CODE (x) == SIGN_EXTEND) |