diff options
author | Robert Dewar <dewar@adacore.com> | 2010-01-26 10:20:43 +0000 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2010-01-26 11:20:43 +0100 |
commit | 82c7a5b12c3759b3e734ab87107de34f3351e700 (patch) | |
tree | 8dbd5d9be1e14f9cbca56f22e1590d86b8bf1dd1 /gcc | |
parent | 55e4d23d2b3bfe9f11ddc25eb6d2a00a9d6e909a (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/ada/par_sco.adb | 27 |
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 | |