+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
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;
-----------------------