Commit 8f0303e7 by Ed Schonberg Committed by Pierre-Marie de Rodat

[Ada] Reset Is_True_Constant on entites used as OUT/IN OUT actuals

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
parent 73efc7ff
2018-10-09 Ed Schonberg <schonberg@adacore.com> 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 * exp_unst.adb (Unnest_Subprogram): Do not load System to obtain
the Address entity unless an activation record is being built. the Address entity unless an activation record is being built.
Removes useless with_clauses for System when nested subprograms Removes useless with_clauses for System when nested subprograms
......
...@@ -1442,6 +1442,7 @@ package body Exp_Ch6 is ...@@ -1442,6 +1442,7 @@ package body Exp_Ch6 is
Kill_Current_Values (Temp); Kill_Current_Values (Temp);
Set_Is_Known_Valid (Temp, False); Set_Is_Known_Valid (Temp, False);
Set_Is_True_Constant (Temp, False);
-- If type conversion, use reverse conversion on exit -- If type conversion, use reverse conversion on exit
...@@ -1653,6 +1654,7 @@ package body Exp_Ch6 is ...@@ -1653,6 +1654,7 @@ package body Exp_Ch6 is
if Ekind (Formal) /= E_In_Parameter then if Ekind (Formal) /= E_In_Parameter then
Lhs := Outcod; Lhs := Outcod;
Rhs := New_Occurrence_Of (Temp, Loc); Rhs := New_Occurrence_Of (Temp, Loc);
Set_Is_True_Constant (Temp, False);
-- Deal with conversion -- Deal with conversion
...@@ -3431,6 +3433,7 @@ package body Exp_Ch6 is ...@@ -3431,6 +3433,7 @@ package body Exp_Ch6 is
Kill_Current_Values (Ent); Kill_Current_Values (Ent);
Set_Last_Assignment (Ent, Sav); Set_Last_Assignment (Ent, Sav);
Set_Is_Known_Valid (Ent, False); Set_Is_Known_Valid (Ent, False);
Set_Is_True_Constant (Ent, False);
-- For all other cases, just kill the current values -- For all other cases, just kill the current values
......
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