Commit 878e58c8 by Robert Dewar Committed by Arnaud Charlet

exp_ch4.adb (Expand_N_Op_Eq): Introduce 'Machine for 'Result comparison.

2015-05-22  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Eq): Introduce 'Machine for 'Result
	comparison.

From-SVN: r223559
parent 64a40a7b
2015-05-22 Robert Dewar <dewar@adacore.com>
* exp_ch4.adb (Expand_N_Op_Eq): Introduce 'Machine for 'Result
comparison.
2015-05-22 Eric Botcazou <ebotcazou@adacore.com>
* sprint.adb (Source_Dump): When generating debug files, deal
......
......@@ -7519,7 +7519,31 @@ package body Exp_Ch4 is
Rewrite_Comparison (N);
-- Special optimization of length comparison
Optimize_Length_Comparison (N);
-- One more special case, if we have a comparison of X'Result = expr
-- in floating-point, then if not already there, change expr to be
-- f'Machine (expr) to eliminate suprise from extra precision.
if Is_Floating_Point_Type (Typl)
and then Nkind (Original_Node (Lhs)) = N_Attribute_Reference
and then Attribute_Name (Original_Node (Lhs)) = Name_Result
then
-- Stick in the Typ'Machine call if not already there
if Nkind (Rhs) /= N_Attribute_Reference
or else Attribute_Name (Rhs) /= Name_Machine
then
Rewrite (Rhs,
Make_Attribute_Reference (Loc,
Prefix => New_Occurrence_Of (Typl, Loc),
Attribute_Name => Name_Machine,
Expressions => New_List (Relocate_Node (Rhs))));
Analyze_And_Resolve (Rhs, Typl);
end if;
end if;
end Expand_N_Op_Eq;
-----------------------
......
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