Define and use new function build_range_type.
From-SVN: r3624
This commit is contained in:
parent
c8d6697caa
commit
742e43a2fa
35
gcc/tree.c
35
gcc/tree.c
|
@ -2688,20 +2688,25 @@ build_index_type (maxval)
|
|||
return itype;
|
||||
}
|
||||
|
||||
/* Just like build_index_type, but takes lowval and highval instead
|
||||
of just highval (maxval). */
|
||||
/* Create a range of some discrete type TYPE (an INTEGER_TYPE,
|
||||
ENUMERAL_TYPE, BOOLEAN_TYPE, or VHAR_TYPE), with
|
||||
low bound LOWVAL and high bound HIGHVAL.
|
||||
if TYPE==NULL_TREE, sizetype is used. */
|
||||
|
||||
tree
|
||||
build_index_2_type (lowval,highval)
|
||||
tree lowval, highval;
|
||||
build_range_type (type, lowval, highval)
|
||||
tree type, lowval, highval;
|
||||
{
|
||||
register tree itype = make_node (INTEGER_TYPE);
|
||||
TYPE_PRECISION (itype) = TYPE_PRECISION (sizetype);
|
||||
TYPE_MIN_VALUE (itype) = convert (sizetype, lowval);
|
||||
TYPE_MAX_VALUE (itype) = convert (sizetype, highval);
|
||||
TYPE_MODE (itype) = TYPE_MODE (sizetype);
|
||||
TYPE_SIZE (itype) = TYPE_SIZE (sizetype);
|
||||
TYPE_ALIGN (itype) = TYPE_ALIGN (sizetype);
|
||||
TREE_TYPE (itype) = type;
|
||||
if (type == NULL_TREE)
|
||||
type = sizetype;
|
||||
TYPE_PRECISION (itype) = TYPE_PRECISION (type);
|
||||
TYPE_MIN_VALUE (itype) = convert (type, lowval);
|
||||
TYPE_MAX_VALUE (itype) = convert (type, highval);
|
||||
TYPE_MODE (itype) = TYPE_MODE (type);
|
||||
TYPE_SIZE (itype) = TYPE_SIZE (type);
|
||||
TYPE_ALIGN (itype) = TYPE_ALIGN (type);
|
||||
if ((TREE_CODE (lowval) == INTEGER_CST)
|
||||
&& (TREE_CODE (highval) == INTEGER_CST))
|
||||
{
|
||||
|
@ -2714,6 +2719,16 @@ build_index_2_type (lowval,highval)
|
|||
return itype;
|
||||
}
|
||||
|
||||
/* Just like build_index_type, but takes lowval and highval instead
|
||||
of just highval (maxval). */
|
||||
|
||||
tree
|
||||
build_index_2_type (lowval,highval)
|
||||
tree lowval, highval;
|
||||
{
|
||||
return build_range_type (NULL_TREE, lowval, highval);
|
||||
}
|
||||
|
||||
/* Return nonzero iff ITYPE1 and ITYPE2 are equal (in the LISP sense).
|
||||
Needed because when index types are not hashed, equal index types
|
||||
built at different times appear distinct, even though structurally,
|
||||
|
|
Loading…
Reference in New Issue