diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2011-08-30 15:41:24 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2011-08-30 15:41:24 +0200 |
commit | c01817d2e03b80c93d4be08927d4573777c5e129 (patch) | |
tree | 1880ea83ac066801135cc69321359f40a3523cb9 /gcc/ada/expander.adb | |
parent | 996c8821a235a2313d3574d0815044847f7b5c14 (diff) | |
download | gcc-c01817d2e03b80c93d4be08927d4573777c5e129.zip gcc-c01817d2e03b80c93d4be08927d4573777c5e129.tar.gz gcc-c01817d2e03b80c93d4be08927d4573777c5e129.tar.bz2 |
[multiple changes]
2011-08-30 Javier Miranda <miranda@adacore.com>
* sem_ch3.adb (Add_Internal_Interface_Entities): If serious errors have
been reported and a subprogram covering an interface primitive is not
found then skip generating the internal entity. Done to avoid crashing
the frontend.
(Check_Abstract_Overriding): Change text of error of wrong formal of
protected subprogram or entry. Done for consistency to emit exactly the
same error reported by Check_Synchronized_Overriding. In addition, the
error is restricted to protected types (bug found working on AI05-0090)
2011-08-30 Yannick Moy <moy@adacore.com>
* exp_aggr.adb, exp_ch11.adb, exp_prag.adb: Remove early exit during
expansion in Alfa mode.
* exp_ch6.adb, exp_ch6.ads (Expand_Actuals): Make subprogram public.
* exp_light.adb, exp_light.ads: New package defining light expansion.
* expander.adb (Expand): Call light expansion in Alfa mode
* exp_ch6_light.adb, exp_ch6_light.ads: Light expansion of chapter 6
constructs.
* exp_ch7_light.adb, exp_ch7_light.ads: Light expansion of chapter 7
constructs.
* exp_attr_light.adb, exp_attr_light.ads: Light expansion of attributes
* gnat1drv.adb (Adjust_Global_Switches): Comment
2011-08-30 Yannick Moy <moy@adacore.com>
* lib-xref-alfa.adb: Minor refactoring.
2011-08-30 Yannick Moy <moy@adacore.com>
* exp_ch9.adb (Expand_Entry_Barrier): Do not perform expansion in Alfa
mode.
* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Do not perform
expansion in Alfa mode.
* sem_ch9.adb (Analyze_Entry_Body): Do not perform expansion in Alfa
mode.
2011-08-30 Robert Dewar <dewar@adacore.com>
* debug_a.adb: Update comment.
From-SVN: r178304
Diffstat (limited to 'gcc/ada/expander.adb')
-rw-r--r-- | gcc/ada/expander.adb | 431 |
1 files changed, 219 insertions, 212 deletions
diff --git a/gcc/ada/expander.adb b/gcc/ada/expander.adb index 95b5d97..59045e7 100644 --- a/gcc/ada/expander.adb +++ b/gcc/ada/expander.adb @@ -39,6 +39,7 @@ with Exp_Ch9; use Exp_Ch9; with Exp_Ch11; use Exp_Ch11; with Exp_Ch12; use Exp_Ch12; with Exp_Ch13; use Exp_Ch13; +with Exp_Light; use Exp_Light; with Exp_Prag; use Exp_Prag; with Opt; use Opt; with Rtsfind; use Rtsfind; @@ -131,325 +132,331 @@ package body Expander is -- routines. begin - case Nkind (N) is + if ALFA_Mode then + Expand_Light (N); - when N_Abort_Statement => - Expand_N_Abort_Statement (N); + else + case Nkind (N) is - when N_Accept_Statement => - Expand_N_Accept_Statement (N); + when N_Abort_Statement => + Expand_N_Abort_Statement (N); - when N_Aggregate => - Expand_N_Aggregate (N); + when N_Accept_Statement => + Expand_N_Accept_Statement (N); - when N_Allocator => - Expand_N_Allocator (N); + when N_Aggregate => + Expand_N_Aggregate (N); - when N_And_Then => - Expand_N_And_Then (N); + when N_Allocator => + Expand_N_Allocator (N); - when N_Assignment_Statement => - Expand_N_Assignment_Statement (N); + when N_And_Then => + Expand_N_And_Then (N); - when N_Asynchronous_Select => - Expand_N_Asynchronous_Select (N); + when N_Assignment_Statement => + Expand_N_Assignment_Statement (N); - when N_Attribute_Definition_Clause => - Expand_N_Attribute_Definition_Clause (N); + when N_Asynchronous_Select => + Expand_N_Asynchronous_Select (N); - when N_Attribute_Reference => - Expand_N_Attribute_Reference (N); + when N_Attribute_Definition_Clause => + Expand_N_Attribute_Definition_Clause (N); - when N_Block_Statement => - Expand_N_Block_Statement (N); + when N_Attribute_Reference => + Expand_N_Attribute_Reference (N); - when N_Case_Expression => - Expand_N_Case_Expression (N); + when N_Block_Statement => + Expand_N_Block_Statement (N); - when N_Case_Statement => - Expand_N_Case_Statement (N); + when N_Case_Expression => + Expand_N_Case_Expression (N); - when N_Conditional_Entry_Call => - Expand_N_Conditional_Entry_Call (N); + when N_Case_Statement => + Expand_N_Case_Statement (N); - when N_Conditional_Expression => - Expand_N_Conditional_Expression (N); + when N_Conditional_Entry_Call => + Expand_N_Conditional_Entry_Call (N); - when N_Delay_Relative_Statement => - Expand_N_Delay_Relative_Statement (N); + when N_Conditional_Expression => + Expand_N_Conditional_Expression (N); - when N_Delay_Until_Statement => - Expand_N_Delay_Until_Statement (N); + when N_Delay_Relative_Statement => + Expand_N_Delay_Relative_Statement (N); - when N_Entry_Body => - Expand_N_Entry_Body (N); + when N_Delay_Until_Statement => + Expand_N_Delay_Until_Statement (N); - when N_Entry_Call_Statement => - Expand_N_Entry_Call_Statement (N); + when N_Entry_Body => + Expand_N_Entry_Body (N); - when N_Entry_Declaration => - Expand_N_Entry_Declaration (N); + when N_Entry_Call_Statement => + Expand_N_Entry_Call_Statement (N); - when N_Exception_Declaration => - Expand_N_Exception_Declaration (N); + when N_Entry_Declaration => + Expand_N_Entry_Declaration (N); - when N_Exception_Renaming_Declaration => - Expand_N_Exception_Renaming_Declaration (N); + when N_Exception_Declaration => + Expand_N_Exception_Declaration (N); - when N_Exit_Statement => - Expand_N_Exit_Statement (N); + when N_Exception_Renaming_Declaration => + Expand_N_Exception_Renaming_Declaration (N); - when N_Expanded_Name => - Expand_N_Expanded_Name (N); + when N_Exit_Statement => + Expand_N_Exit_Statement (N); - when N_Explicit_Dereference => - Expand_N_Explicit_Dereference (N); + when N_Expanded_Name => + Expand_N_Expanded_Name (N); - when N_Expression_With_Actions => - Expand_N_Expression_With_Actions (N); + when N_Explicit_Dereference => + Expand_N_Explicit_Dereference (N); - when N_Extended_Return_Statement => - Expand_N_Extended_Return_Statement (N); + when N_Expression_With_Actions => + Expand_N_Expression_With_Actions (N); - when N_Extension_Aggregate => - Expand_N_Extension_Aggregate (N); + when N_Extended_Return_Statement => + Expand_N_Extended_Return_Statement (N); - when N_Free_Statement => - Expand_N_Free_Statement (N); + when N_Extension_Aggregate => + Expand_N_Extension_Aggregate (N); - when N_Freeze_Entity => - Expand_N_Freeze_Entity (N); + when N_Free_Statement => + Expand_N_Free_Statement (N); - when N_Full_Type_Declaration => - Expand_N_Full_Type_Declaration (N); + when N_Freeze_Entity => + Expand_N_Freeze_Entity (N); - when N_Function_Call => - Expand_N_Function_Call (N); + when N_Full_Type_Declaration => + Expand_N_Full_Type_Declaration (N); - when N_Generic_Instantiation => - Expand_N_Generic_Instantiation (N); + when N_Function_Call => + Expand_N_Function_Call (N); - when N_Goto_Statement => - Expand_N_Goto_Statement (N); + when N_Generic_Instantiation => + Expand_N_Generic_Instantiation (N); - when N_Handled_Sequence_Of_Statements => - Expand_N_Handled_Sequence_Of_Statements (N); + when N_Goto_Statement => + Expand_N_Goto_Statement (N); - when N_Identifier => - Expand_N_Identifier (N); + when N_Handled_Sequence_Of_Statements => + Expand_N_Handled_Sequence_Of_Statements (N); - when N_Indexed_Component => - Expand_N_Indexed_Component (N); + when N_Identifier => + Expand_N_Identifier (N); - when N_If_Statement => - Expand_N_If_Statement (N); + when N_Indexed_Component => + Expand_N_Indexed_Component (N); - when N_In => - Expand_N_In (N); + when N_If_Statement => + Expand_N_If_Statement (N); - when N_Loop_Statement => - Expand_N_Loop_Statement (N); + when N_In => + Expand_N_In (N); - when N_Not_In => - Expand_N_Not_In (N); + when N_Loop_Statement => + Expand_N_Loop_Statement (N); - when N_Null => - Expand_N_Null (N); + when N_Not_In => + Expand_N_Not_In (N); - when N_Object_Declaration => - Expand_N_Object_Declaration (N); + when N_Null => + Expand_N_Null (N); - when N_Object_Renaming_Declaration => - Expand_N_Object_Renaming_Declaration (N); + when N_Object_Declaration => + Expand_N_Object_Declaration (N); - when N_Op_Add => - Expand_N_Op_Add (N); + when N_Object_Renaming_Declaration => + Expand_N_Object_Renaming_Declaration (N); - when N_Op_Abs => - Expand_N_Op_Abs (N); + when N_Op_Add => + Expand_N_Op_Add (N); - when N_Op_And => - Expand_N_Op_And (N); + when N_Op_Abs => + Expand_N_Op_Abs (N); - when N_Op_Concat => - Expand_N_Op_Concat (N); + when N_Op_And => + Expand_N_Op_And (N); - when N_Op_Divide => - Expand_N_Op_Divide (N); + when N_Op_Concat => + Expand_N_Op_Concat (N); - when N_Op_Eq => - Expand_N_Op_Eq (N); + when N_Op_Divide => + Expand_N_Op_Divide (N); - when N_Op_Expon => - Expand_N_Op_Expon (N); + when N_Op_Eq => + Expand_N_Op_Eq (N); - when N_Op_Ge => - Expand_N_Op_Ge (N); + when N_Op_Expon => + Expand_N_Op_Expon (N); - when N_Op_Gt => - Expand_N_Op_Gt (N); + when N_Op_Ge => + Expand_N_Op_Ge (N); - when N_Op_Le => - Expand_N_Op_Le (N); + when N_Op_Gt => + Expand_N_Op_Gt (N); - when N_Op_Lt => - Expand_N_Op_Lt (N); + when N_Op_Le => + Expand_N_Op_Le (N); - when N_Op_Minus => - Expand_N_Op_Minus (N); + when N_Op_Lt => + Expand_N_Op_Lt (N); - when N_Op_Mod => - Expand_N_Op_Mod (N); + when N_Op_Minus => + Expand_N_Op_Minus (N); - when N_Op_Multiply => - Expand_N_Op_Multiply (N); + when N_Op_Mod => + Expand_N_Op_Mod (N); - when N_Op_Ne => - Expand_N_Op_Ne (N); + when N_Op_Multiply => + Expand_N_Op_Multiply (N); - when N_Op_Not => - Expand_N_Op_Not (N); + when N_Op_Ne => + Expand_N_Op_Ne (N); - when N_Op_Or => - Expand_N_Op_Or (N); + when N_Op_Not => + Expand_N_Op_Not (N); - when N_Op_Plus => - Expand_N_Op_Plus (N); + when N_Op_Or => + Expand_N_Op_Or (N); - when N_Op_Rem => - Expand_N_Op_Rem (N); + when N_Op_Plus => + Expand_N_Op_Plus (N); - when N_Op_Rotate_Left => - Expand_N_Op_Rotate_Left (N); + when N_Op_Rem => + Expand_N_Op_Rem (N); - when N_Op_Rotate_Right => - Expand_N_Op_Rotate_Right (N); + when N_Op_Rotate_Left => + Expand_N_Op_Rotate_Left (N); - when N_Op_Shift_Left => - Expand_N_Op_Shift_Left (N); + when N_Op_Rotate_Right => + Expand_N_Op_Rotate_Right (N); - when N_Op_Shift_Right => - Expand_N_Op_Shift_Right (N); + when N_Op_Shift_Left => + Expand_N_Op_Shift_Left (N); - when N_Op_Shift_Right_Arithmetic => - Expand_N_Op_Shift_Right_Arithmetic (N); + when N_Op_Shift_Right => + Expand_N_Op_Shift_Right (N); - when N_Op_Subtract => - Expand_N_Op_Subtract (N); + when N_Op_Shift_Right_Arithmetic => + Expand_N_Op_Shift_Right_Arithmetic (N); - when N_Op_Xor => - Expand_N_Op_Xor (N); + when N_Op_Subtract => + Expand_N_Op_Subtract (N); - when N_Or_Else => - Expand_N_Or_Else (N); + when N_Op_Xor => + Expand_N_Op_Xor (N); - when N_Package_Body => - Expand_N_Package_Body (N); + when N_Or_Else => + Expand_N_Or_Else (N); - when N_Package_Declaration => - Expand_N_Package_Declaration (N); + when N_Package_Body => + Expand_N_Package_Body (N); - when N_Package_Renaming_Declaration => - Expand_N_Package_Renaming_Declaration (N); + when N_Package_Declaration => + Expand_N_Package_Declaration (N); - when N_Subprogram_Renaming_Declaration => - Expand_N_Subprogram_Renaming_Declaration (N); + when N_Package_Renaming_Declaration => + Expand_N_Package_Renaming_Declaration (N); - when N_Pragma => - Expand_N_Pragma (N); + when N_Subprogram_Renaming_Declaration => + Expand_N_Subprogram_Renaming_Declaration (N); - when N_Procedure_Call_Statement => - Expand_N_Procedure_Call_Statement (N); + when N_Pragma => + Expand_N_Pragma (N); - when N_Protected_Type_Declaration => - Expand_N_Protected_Type_Declaration (N); + when N_Procedure_Call_Statement => + Expand_N_Procedure_Call_Statement (N); - when N_Protected_Body => - Expand_N_Protected_Body (N); + when N_Protected_Type_Declaration => + Expand_N_Protected_Type_Declaration (N); - when N_Qualified_Expression => - Expand_N_Qualified_Expression (N); + when N_Protected_Body => + Expand_N_Protected_Body (N); - when N_Quantified_Expression => - Expand_N_Quantified_Expression (N); + when N_Qualified_Expression => + Expand_N_Qualified_Expression (N); - when N_Raise_Statement => - Expand_N_Raise_Statement (N); + when N_Quantified_Expression => + Expand_N_Quantified_Expression (N); - when N_Raise_Constraint_Error => - Expand_N_Raise_Constraint_Error (N); + when N_Raise_Statement => + Expand_N_Raise_Statement (N); - when N_Raise_Program_Error => - Expand_N_Raise_Program_Error (N); + when N_Raise_Constraint_Error => + Expand_N_Raise_Constraint_Error (N); - when N_Raise_Storage_Error => - Expand_N_Raise_Storage_Error (N); + when N_Raise_Program_Error => + Expand_N_Raise_Program_Error (N); - when N_Real_Literal => - Expand_N_Real_Literal (N); + when N_Raise_Storage_Error => + Expand_N_Raise_Storage_Error (N); - when N_Record_Representation_Clause => - Expand_N_Record_Representation_Clause (N); + when N_Real_Literal => + Expand_N_Real_Literal (N); - when N_Requeue_Statement => - Expand_N_Requeue_Statement (N); + when N_Record_Representation_Clause => + Expand_N_Record_Representation_Clause (N); - when N_Simple_Return_Statement => - Expand_N_Simple_Return_Statement (N); + when N_Requeue_Statement => + Expand_N_Requeue_Statement (N); - when N_Selected_Component => - Expand_N_Selected_Component (N); + when N_Simple_Return_Statement => + Expand_N_Simple_Return_Statement (N); - when N_Selective_Accept => - Expand_N_Selective_Accept (N); + when N_Selected_Component => + Expand_N_Selected_Component (N); - when N_Single_Task_Declaration => - Expand_N_Single_Task_Declaration (N); + when N_Selective_Accept => + Expand_N_Selective_Accept (N); - when N_Slice => - Expand_N_Slice (N); + when N_Single_Task_Declaration => + Expand_N_Single_Task_Declaration (N); - when N_Subtype_Indication => - Expand_N_Subtype_Indication (N); + when N_Slice => + Expand_N_Slice (N); - when N_Subprogram_Body => - Expand_N_Subprogram_Body (N); + when N_Subtype_Indication => + Expand_N_Subtype_Indication (N); - when N_Subprogram_Body_Stub => - Expand_N_Subprogram_Body_Stub (N); + when N_Subprogram_Body => + Expand_N_Subprogram_Body (N); - when N_Subprogram_Declaration => - Expand_N_Subprogram_Declaration (N); + when N_Subprogram_Body_Stub => + Expand_N_Subprogram_Body_Stub (N); - when N_Subprogram_Info => - Expand_N_Subprogram_Info (N); + when N_Subprogram_Declaration => + Expand_N_Subprogram_Declaration (N); - when N_Task_Body => - Expand_N_Task_Body (N); + when N_Subprogram_Info => + Expand_N_Subprogram_Info (N); - when N_Task_Type_Declaration => - Expand_N_Task_Type_Declaration (N); + when N_Task_Body => + Expand_N_Task_Body (N); - when N_Timed_Entry_Call => - Expand_N_Timed_Entry_Call (N); + when N_Task_Type_Declaration => + Expand_N_Task_Type_Declaration (N); - when N_Type_Conversion => - Expand_N_Type_Conversion (N); + when N_Timed_Entry_Call => + Expand_N_Timed_Entry_Call (N); - when N_Unchecked_Expression => - Expand_N_Unchecked_Expression (N); + when N_Type_Conversion => + Expand_N_Type_Conversion (N); - when N_Unchecked_Type_Conversion => - Expand_N_Unchecked_Type_Conversion (N); + when N_Unchecked_Expression => + Expand_N_Unchecked_Expression (N); - when N_Variant_Part => - Expand_N_Variant_Part (N); + when N_Unchecked_Type_Conversion => + Expand_N_Unchecked_Type_Conversion (N); - -- For all other node kinds, no expansion activity is required + when N_Variant_Part => + Expand_N_Variant_Part (N); - when others => null; + -- For all other node kinds, no expansion activity is + -- required. - end case; + when others => null; + + end case; + end if; exception when RE_Not_Available => |