[Ada] Reset Is_True_Constant on entites used as OUT/IN OUT actuals
authorEd Schonberg <schonberg@adacore.com>
Tue, 9 Oct 2018 15:05:34 +0000 (15:05 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Tue, 9 Oct 2018 15:05:34 +0000 (15:05 +0000)
2018-10-09  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* exp_ch6.adb (Add_Call_By_Copy_Node,
Add_Simple_Call_By_Copy_Node, Expand_Call_Helper): Reset
Is_True_Constant on entities used as Out or In_Out parameters in
calls.

From-SVN: r264968

gcc/ada/ChangeLog
gcc/ada/exp_ch6.adb

index aee5a62c0f41294609ae1ce32cbf441a615ffdf9..70702933f24d1ec78d3004e70976f0bab8728351 100644 (file)
@@ -1,3 +1,10 @@
+2018-10-09  Ed Schonberg  <schonberg@adacore.com>
+
+       * exp_ch6.adb (Add_Call_By_Copy_Node,
+       Add_Simple_Call_By_Copy_Node, Expand_Call_Helper): Reset
+       Is_True_Constant on entities used as Out or In_Out parameters in
+       calls.
+
 2018-10-09  Ed Schonberg  <schonberg@adacore.com>
 
        * exp_unst.adb (Unnest_Subprogram): Do not load System to obtain
index 96ee696bdb75c69629309cf4b4fb81358f175641..2988f77e3cb6485cc26abeba13bf542c7cc38e5b 100644 (file)
@@ -1442,6 +1442,7 @@ package body Exp_Ch6 is
 
             Kill_Current_Values (Temp);
             Set_Is_Known_Valid (Temp, False);
+            Set_Is_True_Constant (Temp, False);
 
             --  If type conversion, use reverse conversion on exit
 
@@ -1653,6 +1654,7 @@ package body Exp_Ch6 is
          if Ekind (Formal) /= E_In_Parameter then
             Lhs := Outcod;
             Rhs := New_Occurrence_Of (Temp, Loc);
+            Set_Is_True_Constant (Temp, False);
 
             --  Deal with conversion
 
@@ -3431,6 +3433,7 @@ package body Exp_Ch6 is
                   Kill_Current_Values (Ent);
                   Set_Last_Assignment (Ent, Sav);
                   Set_Is_Known_Valid (Ent, False);
+                  Set_Is_True_Constant (Ent, False);
 
                --  For all other cases, just kill the current values