diff mbox series

[Ada] Fix small fallout of change for 'Pos and 'Val attributes

Message ID 20200617081609.GA55214@adacore.com
State New
Headers show
Series [Ada] Fix small fallout of change for 'Pos and 'Val attributes | expand

Commit Message

Pierre-Marie de Rodat June 17, 2020, 8:16 a.m. UTC
The function Build_Conversion in Exp_Fixd does a bit of folding but
fails to preserve the Conversion_OK flag in doing so, unlike other
flags.

Tested on x86_64-pc-linux-gnu, committed on trunk

2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_fixd.adb (Build_Conversion): Also preserve the
	Conversion_OK flag of an inner conversion.
diff mbox series

Patch

--- gcc/ada/exp_fixd.adb
+++ gcc/ada/exp_fixd.adb
@@ -262,7 +262,8 @@  package body Exp_Fixd is
          --  Remove inner conversion if both inner and outer conversions are
          --  to integer types, since the inner one serves no purpose (except
          --  perhaps to set rounding, so we preserve the Rounded_Result flag)
-         --  and also we preserve the range check flag on the inner operand
+         --  and also preserve the Conversion_OK and Do_Range_Check flags of
+         --  the inner conversion.
 
          if Is_Integer_Type (Typ)
            and then Is_Integer_Type (Etype (Expr))
@@ -273,6 +274,7 @@  package body Exp_Fixd is
                 Subtype_Mark => New_Occurrence_Of (Typ, Loc),
                 Expression   => Expression (Expr));
             Set_Rounded_Result (Result, Rounded_Result_Set (Expr));
+            Set_Conversion_OK  (Result, Conversion_OK (Expr));
             Rcheck := Rcheck or Do_Range_Check (Expr);
 
          --  For all other cases, a simple type conversion will work