aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRobert Dewar <dewar@adacore.com>2010-01-26 10:20:43 +0000
committerArnaud Charlet <charlet@gcc.gnu.org>2010-01-26 11:20:43 +0100
commit82c7a5b12c3759b3e734ab87107de34f3351e700 (patch)
tree8dbd5d9be1e14f9cbca56f22e1590d86b8bf1dd1 /gcc
parent55e4d23d2b3bfe9f11ddc25eb6d2a00a9d6e909a (diff)
downloadgcc-82c7a5b12c3759b3e734ab87107de34f3351e700.zip
gcc-82c7a5b12c3759b3e734ab87107de34f3351e700.tar.gz
gcc-82c7a5b12c3759b3e734ab87107de34f3351e700.tar.bz2
par_sco.adb (Traverse_Declarations_Or_Statements): Add processing for Case.
2010-01-26 Robert Dewar <dewar@adacore.com> * par_sco.adb (Traverse_Declarations_Or_Statements): Add processing for Case. From-SVN: r156240
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/par_sco.adb27
2 files changed, 31 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index e46d80e..3c8d13f 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,10 @@
2010-01-26 Robert Dewar <dewar@adacore.com>
+ * par_sco.adb (Traverse_Declarations_Or_Statements): Add processing for
+ Case.
+
+2010-01-26 Robert Dewar <dewar@adacore.com>
+
* par_sco.adb (Is_Logical_Operator): Exclude AND/OR/XOR
* scos.ads: Clarify handling of logical operators
diff --git a/gcc/ada/par_sco.adb b/gcc/ada/par_sco.adb
index e47dbbc..67806b4 100644
--- a/gcc/ada/par_sco.adb
+++ b/gcc/ada/par_sco.adb
@@ -887,7 +887,32 @@ package body Par_SCO is
Traverse_Declarations_Or_Statements (Else_Statements (N));
- -- Unconditional exit points
+ -- Case statement
+
+ when N_Case_Statement =>
+
+ -- We include the expression, but not any of the case
+ -- branches in the generated statement sequence that
+ -- includes this case statement.
+
+ Sloc_Range (Expression (N), Dummy, Stop);
+ Set_Statement_Entry;
+ Process_Decisions (Expression (N), 'X');
+
+ -- Process case branches
+
+ declare
+ Alt : Node_Id;
+
+ begin
+ Alt := First (Alternatives (N));
+ while Present (Alt) loop
+ Traverse_Declarations_Or_Statements (Statements (Alt));
+ Next (Alt);
+ end loop;
+ end;
+
+ -- Unconditional exit points
when N_Requeue_Statement |
N_Goto_Statement |