diff options
author | Ed Schonberg <schonberg@adacore.com> | 2019-07-04 08:05:50 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2019-07-04 08:05:50 +0000 |
commit | c3c41b296a71e77742d3edb3494945537cd72983 (patch) | |
tree | 2c776f2e7d8c00bce055d8974e7c9a27a64ec8a4 /gcc | |
parent | 3d53efa6921534027dbe5d408ac274736dc43d9c (diff) | |
download | gcc-c3c41b296a71e77742d3edb3494945537cd72983.zip gcc-c3c41b296a71e77742d3edb3494945537cd72983.tar.gz gcc-c3c41b296a71e77742d3edb3494945537cd72983.tar.bz2 |
[Ada] Unnesting: handle conditional expressions
2019-07-04 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* exp_unst.adb: Handle conditional expressions.
From-SVN: r273053
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/ada/exp_unst.adb | 27 |
2 files changed, 31 insertions, 0 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 07c3747..c60ab6d 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,7 @@ +2019-07-04 Ed Schonberg <schonberg@adacore.com> + + * exp_unst.adb: Handle conditional expressions. + 2019-07-04 Yannick Moy <moy@adacore.com> * sem_spark.adb (Check_Package_Spec, Check_Package_Body): Only diff --git a/gcc/ada/exp_unst.adb b/gcc/ada/exp_unst.adb index b81b1b9..6717610 100644 --- a/gcc/ada/exp_unst.adb +++ b/gcc/ada/exp_unst.adb @@ -598,6 +598,33 @@ package body Exp_Unst is then Note_Uplevel_Bound (Prefix (N), Ref); + -- Conditional expressions. + + elsif Nkind (N) = N_If_Expression then + declare + Expr : Node_Id; + + begin + Expr := First (Expressions (N)); + while Present (Expr) loop + Note_Uplevel_Bound (Expr, Ref); + Next (Expr); + end loop; + end; + + elsif Nkind (N) = N_Case_Expression then + declare + Alternative : Node_Id; + + begin + Note_Uplevel_Bound (Expression (N), Ref); + + Alternative := First (Alternatives (N)); + while Present (Alternative) loop + Note_Uplevel_Bound (Expression (Alternative), Ref); + end loop; + end; + -- Conversion case elsif Nkind (N) = N_Type_Conversion then |