aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@adacore.com>2021-04-01 11:35:07 -0400
committerPierre-Marie de Rodat <derodat@adacore.com>2021-06-21 06:45:15 -0400
commitd315f859f89dc925cc60c6df53a615b97be110e5 (patch)
tree67b5da1d6de4e17799cfe553e99fc42c49cf024d
parent9418d3d41f581edd9acfdc4f359d37f948c1671e (diff)
downloadgcc-d315f859f89dc925cc60c6df53a615b97be110e5.zip
gcc-d315f859f89dc925cc60c6df53a615b97be110e5.tar.gz
gcc-d315f859f89dc925cc60c6df53a615b97be110e5.tar.bz2
[Ada] Add Return_Statement field
gcc/ada/ * einfo.ads (Return_Statement): Add documentation. * exp_ch6.adb (Expand_N_Extended_Return_Statement): Set it. * gen_il-fields.ads: Add it. * gen_il-gen-gen_entities.adb: Add it.
-rw-r--r--gcc/ada/einfo.ads5
-rw-r--r--gcc/ada/exp_ch6.adb1
-rw-r--r--gcc/ada/gen_il-fields.ads1
-rw-r--r--gcc/ada/gen_il-gen-gen_entities.adb2
4 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ada/einfo.ads b/gcc/ada/einfo.ads
index 93ccffb..4c5a2da 100644
--- a/gcc/ada/einfo.ads
+++ b/gcc/ada/einfo.ads
@@ -4206,6 +4206,11 @@ package Einfo is
-- entities (for convenience in setting it), but is only tested
-- for the function case.
+-- Return_Statement
+-- Defined in E_Variable. Set when Is_Return_Object is set, in which
+-- case it points to the N_Simple_Return_Statement made from the
+-- extended return statement.
+
-- Returns_By_Ref
-- Defined in subprogram type entities and functions. Set if a function
-- (or an access-to-function type) returns a result by reference, either
diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
index 14c5d18..38d78b0 100644
--- a/gcc/ada/exp_ch6.adb
+++ b/gcc/ada/exp_ch6.adb
@@ -6033,6 +6033,7 @@ package body Exp_Ch6 is
-- Set the flag to prevent infinite recursion
Set_Comes_From_Extended_Return_Statement (Return_Stmt);
+ Set_Return_Statement (Ret_Obj_Id, Return_Stmt);
Rewrite (N, Result);
diff --git a/gcc/ada/gen_il-fields.ads b/gcc/ada/gen_il-fields.ads
index 768b116..603f08a 100644
--- a/gcc/ada/gen_il-fields.ads
+++ b/gcc/ada/gen_il-fields.ads
@@ -874,6 +874,7 @@ package Gen_IL.Fields is
Requires_Overriding,
Return_Applies_To,
Return_Present,
+ Return_Statement,
Returns_By_Ref,
Reverse_Bit_Order,
Reverse_Storage_Order,
diff --git a/gcc/ada/gen_il-gen-gen_entities.adb b/gcc/ada/gen_il-gen-gen_entities.adb
index dda309b..9fe9012 100644
--- a/gcc/ada/gen_il-gen-gen_entities.adb
+++ b/gcc/ada/gen_il-gen-gen_entities.adb
@@ -350,6 +350,7 @@ begin -- Gen_IL.Gen.Gen_Entities
Sm (Prival_Link, Node_Id),
Sm (Related_Expression, Node_Id),
Sm (Related_Type, Node_Id),
+ Sm (Return_Statement, Node_Id),
Sm (Size_Check_Code, Node_Id),
Sm (SPARK_Pragma, Node_Id),
Sm (SPARK_Pragma_Inherited, Flag),
@@ -421,6 +422,7 @@ begin -- Gen_IL.Gen.Gen_Entities
Sm (Prival_Link, Node_Id),
Sm (Related_Expression, Node_Id),
Sm (Related_Type, Node_Id),
+ Sm (Return_Statement, Node_Id),
Sm (Shared_Var_Procs_Instance, Node_Id),
Sm (Size_Check_Code, Node_Id),
Sm (SPARK_Pragma, Node_Id),