From: Robert Dewar Date: Tue, 26 Jan 2010 10:20:43 +0000 (+0000) Subject: par_sco.adb (Traverse_Declarations_Or_Statements): Add processing for Case. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=82c7a5b12c3759b3e734ab87107de34f3351e700;p=gcc.git par_sco.adb (Traverse_Declarations_Or_Statements): Add processing for Case. 2010-01-26 Robert Dewar * par_sco.adb (Traverse_Declarations_Or_Statements): Add processing for Case. From-SVN: r156240 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index e46d80e6f91..3c8d13fedfd 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2010-01-26 Robert Dewar + + * par_sco.adb (Traverse_Declarations_Or_Statements): Add processing for + Case. + 2010-01-26 Robert Dewar * par_sco.adb (Is_Logical_Operator): Exclude AND/OR/XOR diff --git a/gcc/ada/par_sco.adb b/gcc/ada/par_sco.adb index e47dbbc7dea..67806b4f6f9 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 |