aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEd Schonberg <schonberg@adacore.com>2019-07-04 08:05:50 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2019-07-04 08:05:50 +0000
commitc3c41b296a71e77742d3edb3494945537cd72983 (patch)
tree2c776f2e7d8c00bce055d8974e7c9a27a64ec8a4 /gcc
parent3d53efa6921534027dbe5d408ac274736dc43d9c (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/ada/exp_unst.adb27
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