EGCS fix for VAX. It is illegal to shift by more bits than is can be

contained in the type.  This was cc to die when initialize the
tetra long values on vax because it was trying to shift by -64.
This in turn was causing a reserved operand fault resulting in a SIGILL.
This commit is contained in:
matt 1998-10-14 01:45:16 +00:00
parent 55436d0a18
commit 048bef97f2

View File

@ -1249,9 +1249,11 @@ fixup_unsigned_type (type)
= build_int_2 (precision - HOST_BITS_PER_WIDE_INT >= 0
? -1 : ((HOST_WIDE_INT) 1 << precision) - 1,
precision - HOST_BITS_PER_WIDE_INT > 0
? ((unsigned HOST_WIDE_INT) ~0
>> (HOST_BITS_PER_WIDE_INT
- (precision - HOST_BITS_PER_WIDE_INT)))
? (precision - HOST_BITS_PER_WIDE_INT > HOST_BITS_PER_WIDE_INT
? (unsigned HOST_WIDE_INT) ~0
: ((unsigned HOST_WIDE_INT) ~0
>> (HOST_BITS_PER_WIDE_INT
- (precision - HOST_BITS_PER_WIDE_INT))))
: 0);
TREE_TYPE (TYPE_MIN_VALUE (type)) = type;
TREE_TYPE (TYPE_MAX_VALUE (type)) = type;