i386.c (ix86_split_to_parts): Use trunc_int_for_mode to ensure valid SImode constants.

* config/i386/i386.c (ix86_split_to_parts): Use trunc_int_for_mode
	to ensure valid SImode constants.

From-SVN: r46032
This commit is contained in:
Richard Kenner 2001-10-05 12:14:22 +00:00 committed by Richard Kenner
parent 17d69790a5
commit 523fbd9df5
2 changed files with 12 additions and 5 deletions

View File

@ -1,3 +1,8 @@
Fri Oct 5 08:17:46 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* config/i386/i386.c (ix86_split_to_parts): Use trunc_int_for_mode
to ensure valid SImode constants.
2001-10-05 Alexandre Oliva <aoliva@redhat.com>
* Makefile.in (c-decl.o): Depend on tree-inline.h.

View File

@ -8465,7 +8465,7 @@ ix86_split_to_parts (operand, parts, mode)
case XFmode:
case TFmode:
REAL_VALUE_TO_TARGET_LONG_DOUBLE (r, l);
parts[2] = GEN_INT (l[2]);
parts[2] = GEN_INT (trunc_int_for_mode (l[2], SImode));
break;
case DFmode:
REAL_VALUE_TO_TARGET_DOUBLE (r, l);
@ -8473,8 +8473,8 @@ ix86_split_to_parts (operand, parts, mode)
default:
abort ();
}
parts[1] = GEN_INT (l[1]);
parts[0] = GEN_INT (l[0]);
parts[1] = GEN_INT (trunc_int_for_mode (l[1], SImode));
parts[0] = GEN_INT (trunc_int_for_mode (l[0], SImode));
}
else
abort ();
@ -8506,10 +8506,12 @@ ix86_split_to_parts (operand, parts, mode)
REAL_VALUE_TO_TARGET_LONG_DOUBLE (r, l);
/* Do not use shift by 32 to avoid warning on 32bit systems. */
if (HOST_BITS_PER_WIDE_INT >= 64)
parts[0] = GEN_INT (l[0] + ((l[1] << 31) << 1));
parts[0]
= GEN_INT (trunc_int_for_mode (l[0] + ((l[1] << 31) << 1),
SImode));
else
parts[0] = immed_double_const (l[0], l[1], DImode);
parts[1] = GEN_INT (l[2]);
parts[1] = GEN_INT (trunc_int_for_mode (l[2], SImode));
}
else
abort ();