OSDN Git Service
(root)
/
pf3gnuchains
/
gcc-fork.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* config/vax/vax.h (target_flags, MASK_UNIX_ASM, MASK_VAXC_ALIGNMENT)
[pf3gnuchains/gcc-fork.git]
/
gcc
/
ada
/
expander.adb
diff --git
a/gcc/ada/expander.adb
b/gcc/ada/expander.adb
index
83a04a2
..
b2d6e3e
100644
(file)
--- a/
gcc/ada/expander.adb
+++ b/
gcc/ada/expander.adb
@@
-6,7
+6,7
@@
-- --
-- B o d y --
-- --
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-200
1
Free Software Foundation, Inc. --
+-- Copyright (C) 1992-200
3
Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@
-42,6
+42,7
@@
with Exp_Ch12; use Exp_Ch12;
with Exp_Ch13; use Exp_Ch13;
with Exp_Prag; use Exp_Prag;
with Opt; use Opt;
with Exp_Ch13; use Exp_Ch13;
with Exp_Prag; use Exp_Prag;
with Opt; use Opt;
+with Rtsfind; use Rtsfind;
with Sem; use Sem;
with Sem_Ch8; use Sem_Ch8;
with Sem_Util; use Sem_Util;
with Sem; use Sem;
with Sem_Ch8; use Sem_Ch8;
with Sem_Util; use Sem_Util;
@@
-131,307
+132,313
@@
package body Expander is
-- activity required in each case, see bodies of corresponding
-- expand routines
-- activity required in each case, see bodies of corresponding
-- expand routines
- case Nkind (N) is
+ begin
+ case Nkind (N) is
+
+ when N_Abort_Statement =>
+ Expand_N_Abort_Statement (N);
-
when N_Abor
t_Statement =>
-
Expand_N_Abor
t_Statement (N);
+
when N_Accep
t_Statement =>
+
Expand_N_Accep
t_Statement (N);
-
when N_Accept_Statement
=>
-
Expand_N_Accept_Statement
(N);
+
when N_Aggregate
=>
+
Expand_N_Aggregate
(N);
-
when N_Aggregate
=>
-
Expand_N_Aggregate
(N);
+
when N_Allocator
=>
+
Expand_N_Allocator
(N);
-
when N_Allocator
=>
-
Expand_N_Allocator
(N);
+
when N_And_Then
=>
+
Expand_N_And_Then
(N);
-
when N_And_Then
=>
-
Expand_N_And_Then
(N);
+
when N_Assignment_Statement
=>
+
Expand_N_Assignment_Statement
(N);
-
when N_Assignment_Statemen
t =>
-
Expand_N_Assignment_Statemen
t (N);
+
when N_Asynchronous_Selec
t =>
+
Expand_N_Asynchronous_Selec
t (N);
-
when N_Asynchronous_Select
=>
-
Expand_N_Asynchronous_Select
(N);
+
when N_Attribute_Definition_Clause
=>
+
Expand_N_Attribute_Definition_Clause
(N);
-
when N_Attribute_Definition_Claus
e =>
-
Expand_N_Attribute_Definition_Claus
e (N);
+
when N_Attribute_Referenc
e =>
+
Expand_N_Attribute_Referenc
e (N);
-
when N_Attribute_Reference
=>
-
Expand_N_Attribute_Reference
(N);
+
when N_Block_Statement
=>
+
Expand_N_Block_Statement
(N);
-
when N_Block
_Statement =>
-
Expand_N_Block
_Statement (N);
+
when N_Case
_Statement =>
+
Expand_N_Case
_Statement (N);
-
when N_Case_Statement
=>
-
Expand_N_Case_Statement
(N);
+
when N_Conditional_Entry_Call
=>
+
Expand_N_Conditional_Entry_Call
(N);
-
when N_Conditional_Entry_Call
=>
-
Expand_N_Conditional_Entry_Call
(N);
+
when N_Conditional_Expression
=>
+
Expand_N_Conditional_Expression
(N);
-
when N_Conditional_Expression
=>
-
Expand_N_Conditional_Expression
(N);
+
when N_Delay_Relative_Statement
=>
+
Expand_N_Delay_Relative_Statement
(N);
-
when N_Delay_Relative
_Statement =>
-
Expand_N_Delay_Relative
_Statement (N);
+
when N_Delay_Until
_Statement =>
+
Expand_N_Delay_Until
_Statement (N);
-
when N_Delay_Until_Statement
=>
-
Expand_N_Delay_Until_Statement
(N);
+
when N_Entry_Body
=>
+
Expand_N_Entry_Body
(N);
-
when N_Entry_Body
=>
-
Expand_N_Entry_Body
(N);
+
when N_Entry_Call_Statement
=>
+
Expand_N_Entry_Call_Statement
(N);
-
when N_Entry_Call_Statement
=>
-
Expand_N_Entry_Call_Statement
(N);
+
when N_Entry_Declaration
=>
+
Expand_N_Entry_Declaration
(N);
-
when N_Entry
_Declaration =>
-
Expand_N_Entry
_Declaration (N);
+
when N_Exception
_Declaration =>
+
Expand_N_Exception
_Declaration (N);
-
when N_Exception
_Declaration =>
-
Expand_N_Exception
_Declaration (N);
+
when N_Exception_Renaming
_Declaration =>
+
Expand_N_Exception_Renaming
_Declaration (N);
-
when N_Exception_Renaming_Declaration
=>
-
Expand_N_Exception_Renaming_Declaration
(N);
+
when N_Exit_Statement
=>
+
Expand_N_Exit_Statement
(N);
-
when N_Exit_Statement
=>
-
Expand_N_Exit_Statement
(N);
+
when N_Expanded_Name
=>
+
Expand_N_Expanded_Name
(N);
-
when N_Expanded_Nam
e =>
-
Expand_N_Expanded_Nam
e (N);
+
when N_Explicit_Dereferenc
e =>
+
Expand_N_Explicit_Dereferenc
e (N);
-
when N_Explicit_Dereferenc
e =>
-
Expand_N_Explicit_Dereferenc
e (N);
+
when N_Extension_Aggregat
e =>
+
Expand_N_Extension_Aggregat
e (N);
-
when N_Extension_Aggregate
=>
-
Expand_N_Extension_Aggregate
(N);
+
when N_Freeze_Entity
=>
+
Expand_N_Freeze_Entity
(N);
-
when N_Freeze_Entity
=>
-
Expand_N_Freeze_Entity
(N);
+
when N_Full_Type_Declaration
=>
+
Expand_N_Full_Type_Declaration
(N);
-
when N_Full_Type_Declaration
=>
-
Expand_N_Full_Type_Declaration
(N);
+
when N_Function_Call
=>
+
Expand_N_Function_Call
(N);
-
when N_Function_Call
=>
-
Expand_N_Function_Call
(N);
+
when N_Generic_Instantiation
=>
+
Expand_N_Generic_Instantiation
(N);
-
when N_Generic_Instantiation
=>
-
Expand_N_Generic_Instantiation
(N);
+
when N_Goto_Statement
=>
+
Expand_N_Goto_Statement
(N);
-
when N_Goto_Statement
=>
-
Expand_N_Goto_Statement
(N);
+
when N_Handled_Sequence_Of_Statements
=>
+
Expand_N_Handled_Sequence_Of_Statements
(N);
-
when N_Handled_Sequence_Of_Statements
=>
-
Expand_N_Handled_Sequence_Of_Statements
(N);
+
when N_Identifier
=>
+
Expand_N_Identifier
(N);
-
when N_Identifier
=>
-
Expand_N_Identifier
(N);
+
when N_Indexed_Component
=>
+
Expand_N_Indexed_Component
(N);
-
when N_Indexed_Compon
ent =>
-
Expand_N_Indexed_Compon
ent (N);
+
when N_If_Statem
ent =>
+
Expand_N_If_Statem
ent (N);
-
when N_If_Statement
=>
-
Expand_N_If_Statement
(N);
+
when N_In
=>
+
Expand_N_In
(N);
-
when N_In
=>
-
Expand_N_In
(N);
+
when N_Loop_Statement
=>
+
Expand_N_Loop_Statement
(N);
-
when N_Loop_Statement
=>
-
Expand_N_Loop_Statement
(N);
+
when N_Not_In
=>
+
Expand_N_Not_In
(N);
-
when N_Not_In
=>
-
Expand_N_Not_In
(N);
+
when N_Null
=>
+
Expand_N_Null
(N);
-
when N_Null
=>
-
Expand_N_Null
(N);
+
when N_Object_Declaration
=>
+
Expand_N_Object_Declaration
(N);
-
when N_Object
_Declaration =>
-
Expand_N_Object
_Declaration (N);
+
when N_Object_Renaming
_Declaration =>
+
Expand_N_Object_Renaming
_Declaration (N);
-
when N_Object_Renaming_Declaration
=>
-
Expand_N_Object_Renaming_Declaration
(N);
+
when N_Op_Add
=>
+
Expand_N_Op_Add
(N);
-
when N_Op_Add
=>
-
Expand_N_Op_Add
(N);
+
when N_Op_Abs
=>
+
Expand_N_Op_Abs
(N);
-
when N_Op_Abs
=>
-
Expand_N_Op_Abs
(N);
+
when N_Op_And
=>
+
Expand_N_Op_And
(N);
-
when N_Op_And
=>
-
Expand_N_Op_And
(N);
+
when N_Op_Concat
=>
+
Expand_N_Op_Concat
(N);
-
when N_Op_Concat
=>
-
Expand_N_Op_Concat
(N);
+
when N_Op_Divide
=>
+
Expand_N_Op_Divide
(N);
-
when N_Op_Divide
=>
-
Expand_N_Op_Divide
(N);
+
when N_Op_Eq
=>
+
Expand_N_Op_Eq
(N);
-
when N_Op_Eq
=>
-
Expand_N_Op_Eq
(N);
+
when N_Op_Expon
=>
+
Expand_N_Op_Expon
(N);
-
when N_Op_Expon
=>
-
Expand_N_Op_Expon
(N);
+
when N_Op_Ge
=>
+
Expand_N_Op_Ge
(N);
-
when N_Op_Ge
=>
-
Expand_N_Op_Ge
(N);
+
when N_Op_Gt
=>
+
Expand_N_Op_Gt
(N);
-
when N_Op_Gt
=>
-
Expand_N_Op_Gt
(N);
+
when N_Op_Le
=>
+
Expand_N_Op_Le
(N);
-
when N_Op_Le
=>
-
Expand_N_Op_Le
(N);
+
when N_Op_Lt
=>
+
Expand_N_Op_Lt
(N);
-
when N_Op_Lt
=>
-
Expand_N_Op_Lt
(N);
+
when N_Op_Minus
=>
+
Expand_N_Op_Minus
(N);
-
when N_Op_Minus
=>
-
Expand_N_Op_Minus
(N);
+
when N_Op_Mod
=>
+
Expand_N_Op_Mod
(N);
-
when N_Op_Mod
=>
-
Expand_N_Op_Mod
(N);
+
when N_Op_Multiply
=>
+
Expand_N_Op_Multiply
(N);
-
when N_Op_Multiply
=>
-
Expand_N_Op_Multiply
(N);
+
when N_Op_Ne
=>
+
Expand_N_Op_Ne
(N);
-
when N_Op_Ne
=>
-
Expand_N_Op_Ne
(N);
+
when N_Op_Not
=>
+
Expand_N_Op_Not
(N);
-
when N_Op_Not
=>
-
Expand_N_Op_Not
(N);
+
when N_Op_Or
=>
+
Expand_N_Op_Or
(N);
-
when N_Op_Or
=>
-
Expand_N_Op_Or
(N);
+
when N_Op_Plus
=>
+
Expand_N_Op_Plus
(N);
-
when N_Op_Plus
=>
-
Expand_N_Op_Plus
(N);
+
when N_Op_Rem
=>
+
Expand_N_Op_Rem
(N);
-
when N_Op_Rem
=>
-
Expand_N_Op_Rem
(N);
+
when N_Op_Rotate_Left
=>
+
Expand_N_Op_Rotate_Left
(N);
-
when N_Op_Rotate_Lef
t =>
-
Expand_N_Op_Rotate_Lef
t (N);
+
when N_Op_Rotate_Righ
t =>
+
Expand_N_Op_Rotate_Righ
t (N);
-
when N_Op_Rotate_Righ
t =>
-
Expand_N_Op_Rotate_Righ
t (N);
+
when N_Op_Shift_Lef
t =>
+
Expand_N_Op_Shift_Lef
t (N);
-
when N_Op_Shift_Lef
t =>
-
Expand_N_Op_Shift_Lef
t (N);
+
when N_Op_Shift_Righ
t =>
+
Expand_N_Op_Shift_Righ
t (N);
-
when N_Op_Shift_Right
=>
-
Expand_N_Op_Shift_Right
(N);
+
when N_Op_Shift_Right_Arithmetic
=>
+
Expand_N_Op_Shift_Right_Arithmetic
(N);
-
when N_Op_Shift_Right_Arithmetic
=>
-
Expand_N_Op_Shift_Right_Arithmetic
(N);
+
when N_Op_Subtract
=>
+
Expand_N_Op_Subtract
(N);
-
when N_Op_Subtract
=>
-
Expand_N_Op_Subtract
(N);
+
when N_Op_Xor
=>
+
Expand_N_Op_Xor
(N);
-
when N_Op_Xor
=>
-
Expand_N_Op_Xor
(N);
+
when N_Or_Else
=>
+
Expand_N_Or_Else
(N);
-
when N_Or_Else
=>
-
Expand_N_Or_Else
(N);
+
when N_Package_Body
=>
+
Expand_N_Package_Body
(N);
-
when N_Package_Body
=>
-
Expand_N_Package_Body
(N);
+
when N_Package_Declaration
=>
+
Expand_N_Package_Declaration
(N);
-
when N_Package
_Declaration =>
-
Expand_N_Package
_Declaration (N);
+
when N_Package_Renaming
_Declaration =>
+
Expand_N_Package_Renaming
_Declaration (N);
-
when N_Package_Renaming_Declaration
=>
-
Expand_N_Package_Renaming_Declaration
(N);
+
when N_Pragma
=>
+
Expand_N_Pragma
(N);
-
when N_Pragma
=>
-
Expand_N_Pragma
(N);
+
when N_Procedure_Call_Statement
=>
+
Expand_N_Procedure_Call_Statement
(N);
-
when N_Procedure_Call_Statement
=>
-
Expand_N_Procedure_Call_Statement
(N);
+
when N_Protected_Type_Declaration
=>
+
Expand_N_Protected_Type_Declaration
(N);
-
when N_Protected_Type_Declaration
=>
-
Expand_N_Protected_Type_Declaration
(N);
+
when N_Protected_Body
=>
+
Expand_N_Protected_Body
(N);
-
when N_Protected_Body
=>
-
Expand_N_Protected_Body
(N);
+
when N_Qualified_Expression
=>
+
Expand_N_Qualified_Expression
(N);
-
when N_Qualified_Expression
=>
-
Expand_N_Qualified_Expression
(N);
+
when N_Raise_Statement
=>
+
Expand_N_Raise_Statement
(N);
-
when N_Raise_Statement
=>
-
Expand_N_Raise_Statement
(N);
+
when N_Raise_Constraint_Error
=>
+
Expand_N_Raise_Constraint_Error
(N);
-
when N_Raise_Constraint
_Error =>
-
Expand_N_Raise_Constraint
_Error (N);
+
when N_Raise_Program
_Error =>
+
Expand_N_Raise_Program
_Error (N);
-
when N_Raise_Program
_Error =>
-
Expand_N_Raise_Program
_Error (N);
+
when N_Raise_Storage
_Error =>
+
Expand_N_Raise_Storage
_Error (N);
-
when N_Raise_Storage_Error
=>
-
Expand_N_Raise_Storage_Error
(N);
+
when N_Real_Literal
=>
+
Expand_N_Real_Literal
(N);
-
when N_Real_Literal
=>
-
Expand_N_Real_Literal
(N);
+
when N_Record_Representation_Clause
=>
+
Expand_N_Record_Representation_Clause
(N);
-
when N_Record_Representation_Clause
=>
-
Expand_N_Record_Representation_Clause
(N);
+
when N_Requeue_Statement
=>
+
Expand_N_Requeue_Statement
(N);
-
when N_Requeue
_Statement =>
-
Expand_N_Requeue
_Statement (N);
+
when N_Return
_Statement =>
+
Expand_N_Return
_Statement (N);
-
when N_Return_Statem
ent =>
-
Expand_N_Return_Statem
ent (N);
+
when N_Selected_Compon
ent =>
+
Expand_N_Selected_Compon
ent (N);
-
when N_Selected_Componen
t =>
-
Expand_N_Selected_Componen
t (N);
+
when N_Selective_Accep
t =>
+
Expand_N_Selective_Accep
t (N);
-
when N_Selective_Accept
=>
-
Expand_N_Selective_Accept
(N);
+
when N_Single_Task_Declaration
=>
+
Expand_N_Single_Task_Declaration
(N);
-
when N_Single_Task_Declaration
=>
-
Expand_N_Single_Task_Declaration
(N);
+
when N_Slice
=>
+
Expand_N_Slice
(N);
-
when N_Slice
=>
-
Expand_N_Slice
(N);
+
when N_Subtype_Indication
=>
+
Expand_N_Subtype_Indication
(N);
-
when N_Subtype_Indication
=>
-
Expand_N_Subtype_Indication
(N);
+
when N_Subprogram_Body
=>
+
Expand_N_Subprogram_Body
(N);
-
when N_Subprogram_Body
=>
-
Expand_N_Subprogram_Body
(N);
+
when N_Subprogram_Body_Stub
=>
+
Expand_N_Subprogram_Body_Stub
(N);
-
when N_Subprogram_Body_Stub
=>
-
Expand_N_Subprogram_Body_Stub
(N);
+
when N_Subprogram_Declaration
=>
+
Expand_N_Subprogram_Declaration
(N);
-
when N_Subprogram_Declaration
=>
-
Expand_N_Subprogram_Declaration
(N);
+
when N_Subprogram_Info
=>
+
Expand_N_Subprogram_Info
(N);
-
when N_Subprogram_Info
=>
-
Expand_N_Subprogram_Info
(N);
+
when N_Task_Body
=>
+
Expand_N_Task_Body
(N);
-
when N_Task_Body
=>
-
Expand_N_Task_Body
(N);
+
when N_Task_Type_Declaration
=>
+
Expand_N_Task_Type_Declaration
(N);
-
when N_Task_Type_Declaration
=>
-
Expand_N_Task_Type_Declaration
(N);
+
when N_Timed_Entry_Call
=>
+
Expand_N_Timed_Entry_Call
(N);
-
when N_Timed_Entry_Call
=>
-
Expand_N_Timed_Entry_Call
(N);
+
when N_Type_Conversion
=>
+
Expand_N_Type_Conversion
(N);
-
when N_Type_Conver
sion =>
-
Expand_N_Type_Conver
sion (N);
+
when N_Unchecked_Expres
sion =>
+
Expand_N_Unchecked_Expres
sion (N);
-
when N_Unchecked_Expres
sion =>
-
Expand_N_Unchecked_Expres
sion (N);
+
when N_Unchecked_Type_Conver
sion =>
+
Expand_N_Unchecked_Type_Conver
sion (N);
-
when N_Unchecked_Type_Conversion
=>
-
Expand_N_Unchecked_Type_Conversion
(N);
+
when N_Variant_Part
=>
+
Expand_N_Variant_Part
(N);
- when N_Variant_Part =>
- Expand_N_Variant_Part (N);
+ -- For all other node kinds, no expansion activity is required
- -- For all other node kinds, no expansion activity is required
+ when others => null;
-
when others => null
;
+
end case
;
- end case;
+ exception
+ when RE_Not_Available =>
+ return;
+ end;
-- Set result as analyzed and then do a possible transient wrap. The
-- transient wrap must be done after the Analyzed flag is set on, so
-- Set result as analyzed and then do a possible transient wrap. The
-- transient wrap must be done after the Analyzed flag is set on, so
@@
-459,6
+466,7
@@
package body Expander is
Debug_A_Exit ("expanding ", N, " (done)");
end if;
Debug_A_Exit ("expanding ", N, " (done)");
end if;
+
end Expand;
---------------------------
end Expand;
---------------------------
@@
-467,9
+475,22
@@
package body Expander is
procedure Expander_Mode_Restore is
begin
procedure Expander_Mode_Restore is
begin
+ -- Not active (has no effect) in ASIS mode (see comments in spec of
+ -- Expander_Mode_Save_And_Set).
+
+ if ASIS_Mode then
+ return;
+ end if;
+
+ -- Otherwise restore the flag
+
Expander_Active := Expander_Flags.Table (Expander_Flags.Last);
Expander_Flags.Decrement_Last;
Expander_Active := Expander_Flags.Table (Expander_Flags.Last);
Expander_Flags.Decrement_Last;
+ -- Keep expander off if serious errors detected. In this case we do
+ -- not need expansion, and continued expansion may cause cascaded
+ -- errors or compiler bombs.
+
if Serious_Errors_Detected /= 0 then
Expander_Active := False;
end if;
if Serious_Errors_Detected /= 0 then
Expander_Active := False;
end if;
@@
-481,6
+502,15
@@
package body Expander is
procedure Expander_Mode_Save_And_Set (Status : Boolean) is
begin
procedure Expander_Mode_Save_And_Set (Status : Boolean) is
begin
+ -- Not active (has no effect) in ASIS mode (see comments in spec of
+ -- Expander_Mode_Save_And_Set).
+
+ if ASIS_Mode then
+ return;
+ end if;
+
+ -- Otherwise save and set the flag
+
Expander_Flags.Increment_Last;
Expander_Flags.Table (Expander_Flags.Last) := Expander_Active;
Expander_Active := Status;
Expander_Flags.Increment_Last;
Expander_Flags.Table (Expander_Flags.Last) := Expander_Active;
Expander_Active := Status;