Commit 936a6fa7 by Eric Botcazou Committed by Eric Botcazou

gigi.h (get_ada_base_type): Delete.

	* gigi.h (get_ada_base_type): Delete.
	* utils2.c (get_ada_base_type): Likewise.
	* trans.c (convert_with_check): Operate in the real base type.

From-SVN: r111711
parent 4469af7a
2006-03-04 Eric Botcazou <ebotcazou@adacore.com>
* gigi.h (get_ada_base_type): Delete.
* utils2.c (get_ada_base_type): Likewise.
* trans.c (convert_with_check): Operate in the real base type.
2006-03-03 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> 2006-03-03 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* uintp.adb (Num_Bits): Handle Uint_Int_First specially. * uintp.adb (Num_Bits): Handle Uint_Int_First specially.
......
...@@ -671,9 +671,6 @@ extern tree gnat_truthvalue_conversion (tree expr); ...@@ -671,9 +671,6 @@ extern tree gnat_truthvalue_conversion (tree expr);
/* Return the base type of TYPE. */ /* Return the base type of TYPE. */
extern tree get_base_type (tree type); extern tree get_base_type (tree type);
/* Likewise, but only return types known at Ada source. */
extern tree get_ada_base_type (tree type);
/* EXP is a GCC tree representing an address. See if we can find how /* EXP is a GCC tree representing an address. See if we can find how
strictly the object at that address is aligned. Return that alignment strictly the object at that address is aligned. Return that alignment
strictly the object at that address is aligned. Return that alignment strictly the object at that address is aligned. Return that alignment
......
...@@ -5323,7 +5323,6 @@ convert_with_check (Entity_Id gnat_type, tree gnu_expr, bool overflowp, ...@@ -5323,7 +5323,6 @@ convert_with_check (Entity_Id gnat_type, tree gnu_expr, bool overflowp,
tree gnu_in_type = TREE_TYPE (gnu_expr); tree gnu_in_type = TREE_TYPE (gnu_expr);
tree gnu_in_basetype = get_base_type (gnu_in_type); tree gnu_in_basetype = get_base_type (gnu_in_type);
tree gnu_base_type = get_base_type (gnu_type); tree gnu_base_type = get_base_type (gnu_type);
tree gnu_ada_base_type = get_ada_base_type (gnu_type);
tree gnu_result = gnu_expr; tree gnu_result = gnu_expr;
/* If we are not doing any checks, the output is an integral type, and /* If we are not doing any checks, the output is an integral type, and
...@@ -5415,7 +5414,7 @@ convert_with_check (Entity_Id gnat_type, tree gnu_expr, bool overflowp, ...@@ -5415,7 +5414,7 @@ convert_with_check (Entity_Id gnat_type, tree gnu_expr, bool overflowp,
/* Now convert to the result base type. If this is a non-truncating /* Now convert to the result base type. If this is a non-truncating
float-to-integer conversion, round. */ float-to-integer conversion, round. */
if (INTEGRAL_TYPE_P (gnu_ada_base_type) && FLOAT_TYPE_P (gnu_in_basetype) if (INTEGRAL_TYPE_P (gnu_base_type) && FLOAT_TYPE_P (gnu_in_basetype)
&& !truncatep) && !truncatep)
{ {
REAL_VALUE_TYPE half_minus_pred_half, pred_half; REAL_VALUE_TYPE half_minus_pred_half, pred_half;
...@@ -5474,12 +5473,12 @@ convert_with_check (Entity_Id gnat_type, tree gnu_expr, bool overflowp, ...@@ -5474,12 +5473,12 @@ convert_with_check (Entity_Id gnat_type, tree gnu_expr, bool overflowp,
gnu_add_pred_half, gnu_subtract_pred_half); gnu_add_pred_half, gnu_subtract_pred_half);
} }
if (TREE_CODE (gnu_ada_base_type) == INTEGER_TYPE if (TREE_CODE (gnu_base_type) == INTEGER_TYPE
&& TYPE_HAS_ACTUAL_BOUNDS_P (gnu_ada_base_type) && TYPE_HAS_ACTUAL_BOUNDS_P (gnu_base_type)
&& TREE_CODE (gnu_result) == UNCONSTRAINED_ARRAY_REF) && TREE_CODE (gnu_result) == UNCONSTRAINED_ARRAY_REF)
gnu_result = unchecked_convert (gnu_ada_base_type, gnu_result, false); gnu_result = unchecked_convert (gnu_base_type, gnu_result, false);
else else
gnu_result = convert (gnu_ada_base_type, gnu_result); gnu_result = convert (gnu_base_type, gnu_result);
/* Finally, do the range check if requested. Note that if the /* Finally, do the range check if requested. Note that if the
result type is a modular type, the range check is actually result type is a modular type, the range check is actually
......
...@@ -123,19 +123,6 @@ get_base_type (tree type) ...@@ -123,19 +123,6 @@ get_base_type (tree type)
return type; return type;
} }
/* Likewise, but only return types known to the Ada source. */
tree
get_ada_base_type (tree type)
{
while (TREE_TYPE (type)
&& (TREE_CODE (type) == INTEGER_TYPE
|| TREE_CODE (type) == REAL_TYPE)
&& !TYPE_EXTRA_SUBTYPE_P (type))
type = TREE_TYPE (type);
return type;
}
/* EXP is a GCC tree representing an address. See if we can find how /* EXP is a GCC tree representing an address. See if we can find how
strictly the object at that address is aligned. Return that alignment strictly the object at that address is aligned. Return that alignment
......
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