Commit 08477031 by Eric Botcazou Committed by Eric Botcazou

* gcc-interface/trans.c (gnat_to_gnu) <N_Real_Literal>: Minor tweaks.

From-SVN: r216730
parent 5fe48b3d
2014-10-27 Eric Botcazou <ebotcazou@adacore.com> 2014-10-27 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/trans.c (gnat_to_gnu) <N_Real_Literal>: Minor tweaks.
2014-10-27 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/utils.c (create_var_decl_1): For a variable declared * gcc-interface/utils.c (create_var_decl_1): For a variable declared
in the unit, set TREE_PUBLIC only if it has static storage duration. in the unit, set TREE_PUBLIC only if it has static storage duration.
......
...@@ -5330,8 +5330,8 @@ gnat_to_gnu (Node_Id gnat_node) ...@@ -5330,8 +5330,8 @@ gnat_to_gnu (Node_Id gnat_node)
case N_Real_Literal: case N_Real_Literal:
gnu_result_type = get_unpadded_type (Etype (gnat_node)); gnu_result_type = get_unpadded_type (Etype (gnat_node));
/* If this is of a fixed-point type, the value we want is the /* If this is of a fixed-point type, the value we want is the value of
value of the corresponding integer. */ the corresponding integer. */
if (IN (Ekind (Underlying_Type (Etype (gnat_node))), Fixed_Point_Kind)) if (IN (Ekind (Underlying_Type (Etype (gnat_node))), Fixed_Point_Kind))
{ {
gnu_result = UI_To_gnu (Corresponding_Integer_Value (gnat_node), gnu_result = UI_To_gnu (Corresponding_Integer_Value (gnat_node),
...@@ -5343,10 +5343,9 @@ gnat_to_gnu (Node_Id gnat_node) ...@@ -5343,10 +5343,9 @@ gnat_to_gnu (Node_Id gnat_node)
{ {
Ureal ur_realval = Realval (gnat_node); Ureal ur_realval = Realval (gnat_node);
/* First convert the real value to a machine number if it isn't /* First convert the value to a machine number if it isn't already.
already. That forces BASE to 2 for non-zero values and simplifies That will force the base to 2 for non-zero values and simplify
the rest of our logic. */ the rest of the logic. */
if (!Is_Machine_Number (gnat_node)) if (!Is_Machine_Number (gnat_node))
ur_realval ur_realval
= Machine (Base_Type (Underlying_Type (Etype (gnat_node))), = Machine (Base_Type (Underlying_Type (Etype (gnat_node))),
...@@ -5358,13 +5357,11 @@ gnat_to_gnu (Node_Id gnat_node) ...@@ -5358,13 +5357,11 @@ gnat_to_gnu (Node_Id gnat_node)
{ {
REAL_VALUE_TYPE tmp; REAL_VALUE_TYPE tmp;
gnu_result gnu_result = UI_To_gnu (Numerator (ur_realval), gnu_result_type);
= UI_To_gnu (Numerator (ur_realval), gnu_result_type);
/* The base must be 2 as Machine guarantees this, so we scale /* The base must be 2 as Machine guarantees this, so we scale
the value, which we know can fit in the mantissa of the type the value, which we know can fit in the mantissa of the type
(hence the use of that type above). */ (hence the use of that type above). */
gcc_assert (Rbase (ur_realval) == 2); gcc_assert (Rbase (ur_realval) == 2);
real_ldexp (&tmp, &TREE_REAL_CST (gnu_result), real_ldexp (&tmp, &TREE_REAL_CST (gnu_result),
- UI_To_Int (Denominator (ur_realval))); - UI_To_Int (Denominator (ur_realval)));
......
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