aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.8/gcc/ada/exp_sel.adb
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.8/gcc/ada/exp_sel.adb')
-rw-r--r--gcc-4.8/gcc/ada/exp_sel.adb263
1 files changed, 0 insertions, 263 deletions
diff --git a/gcc-4.8/gcc/ada/exp_sel.adb b/gcc-4.8/gcc/ada/exp_sel.adb
deleted file mode 100644
index 27245cff5..000000000
--- a/gcc-4.8/gcc/ada/exp_sel.adb
+++ /dev/null
@@ -1,263 +0,0 @@
-------------------------------------------------------------------------------
--- --
--- GNAT COMPILER COMPONENTS --
--- --
--- E X P _ S E L --
--- --
--- B o d y --
--- --
--- Copyright (C) 1992-2011, 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- --
--- ware Foundation; either version 3, or (at your option) any later ver- --
--- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
--- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
--- for more details. You should have received a copy of the GNU General --
--- Public License distributed with GNAT; see file COPYING3. If not, go to --
--- http://www.gnu.org/licenses for a complete copy of the license. --
--- --
--- GNAT was originally developed by the GNAT team at New York University. --
--- Extensive contributions were provided by Ada Core Technologies Inc. --
--- --
-------------------------------------------------------------------------------
-
-with Einfo; use Einfo;
-with Nlists; use Nlists;
-with Nmake; use Nmake;
-with Opt; use Opt;
-with Rtsfind; use Rtsfind;
-with Sinfo; use Sinfo;
-with Snames; use Snames;
-with Stand; use Stand;
-with Tbuild; use Tbuild;
-
-package body Exp_Sel is
-
- -----------------------
- -- Build_Abort_Block --
- -----------------------
-
- function Build_Abort_Block
- (Loc : Source_Ptr;
- Abr_Blk_Ent : Entity_Id;
- Cln_Blk_Ent : Entity_Id;
- Blk : Node_Id) return Node_Id
- is
- begin
- return
- Make_Block_Statement (Loc,
- Identifier => New_Reference_To (Abr_Blk_Ent, Loc),
-
- Declarations => No_List,
-
- Handled_Statement_Sequence =>
- Make_Handled_Sequence_Of_Statements (Loc,
- Statements =>
- New_List (
- Make_Implicit_Label_Declaration (Loc,
- Defining_Identifier => Cln_Blk_Ent,
- Label_Construct => Blk),
- Blk),
-
- Exception_Handlers =>
- New_List (Build_Abort_Block_Handler (Loc))));
- end Build_Abort_Block;
-
- -------------------------------
- -- Build_Abort_Block_Handler --
- -------------------------------
-
- function Build_Abort_Block_Handler (Loc : Source_Ptr) return Node_Id is
- Stmt : Node_Id;
-
- begin
- if Exception_Mechanism = Back_End_Exceptions then
-
- -- With ZCX, aborts are not defered in handlers
-
- Stmt := Make_Null_Statement (Loc);
- else
- -- With FE SJLJ, aborts are defered at the beginning of Abort_Signal
- -- handlers.
-
- Stmt :=
- Make_Procedure_Call_Statement (Loc,
- Name => New_Reference_To (RTE (RE_Abort_Undefer), Loc),
- Parameter_Associations => No_List);
- end if;
-
- return Make_Implicit_Exception_Handler (Loc,
- Exception_Choices =>
- New_List (New_Reference_To (Stand.Abort_Signal, Loc)),
- Statements => New_List (Stmt));
- end Build_Abort_Block_Handler;
-
- -------------
- -- Build_B --
- -------------
-
- function Build_B
- (Loc : Source_Ptr;
- Decls : List_Id) return Entity_Id
- is
- B : constant Entity_Id := Make_Temporary (Loc, 'B');
- begin
- Append_To (Decls,
- Make_Object_Declaration (Loc,
- Defining_Identifier => B,
- Object_Definition => New_Reference_To (Standard_Boolean, Loc),
- Expression => New_Reference_To (Standard_False, Loc)));
- return B;
- end Build_B;
-
- -------------
- -- Build_C --
- -------------
-
- function Build_C
- (Loc : Source_Ptr;
- Decls : List_Id) return Entity_Id
- is
- C : constant Entity_Id := Make_Temporary (Loc, 'C');
- begin
- Append_To (Decls,
- Make_Object_Declaration (Loc,
- Defining_Identifier => C,
- Object_Definition => New_Reference_To (RTE (RE_Prim_Op_Kind), Loc)));
- return C;
- end Build_C;
-
- -------------------------
- -- Build_Cleanup_Block --
- -------------------------
-
- function Build_Cleanup_Block
- (Loc : Source_Ptr;
- Blk_Ent : Entity_Id;
- Stmts : List_Id;
- Clean_Ent : Entity_Id) return Node_Id
- is
- Cleanup_Block : constant Node_Id :=
- Make_Block_Statement (Loc,
- Identifier =>
- New_Reference_To (Blk_Ent, Loc),
- Declarations => No_List,
- Handled_Statement_Sequence =>
- Make_Handled_Sequence_Of_Statements (Loc,
- Statements => Stmts),
- Is_Asynchronous_Call_Block => True);
-
- begin
- Set_Entry_Cancel_Parameter (Blk_Ent, Clean_Ent);
-
- return Cleanup_Block;
- end Build_Cleanup_Block;
-
- -------------
- -- Build_K --
- -------------
-
- function Build_K
- (Loc : Source_Ptr;
- Decls : List_Id;
- Obj : Entity_Id) return Entity_Id
- is
- K : constant Entity_Id := Make_Temporary (Loc, 'K');
- Tag_Node : Node_Id;
-
- begin
- if Tagged_Type_Expansion then
- Tag_Node := Unchecked_Convert_To (RTE (RE_Tag), Obj);
- else
- Tag_Node :=
- Make_Attribute_Reference (Loc,
- Prefix => Obj,
- Attribute_Name => Name_Tag);
- end if;
-
- Append_To (Decls,
- Make_Object_Declaration (Loc,
- Defining_Identifier => K,
- Object_Definition =>
- New_Reference_To (RTE (RE_Tagged_Kind), Loc),
- Expression =>
- Make_Function_Call (Loc,
- Name => New_Reference_To (RTE (RE_Get_Tagged_Kind), Loc),
- Parameter_Associations => New_List (Tag_Node))));
- return K;
- end Build_K;
-
- -------------
- -- Build_S --
- -------------
-
- function Build_S
- (Loc : Source_Ptr;
- Decls : List_Id) return Entity_Id
- is
- S : constant Entity_Id := Make_Temporary (Loc, 'S');
- begin
- Append_To (Decls,
- Make_Object_Declaration (Loc,
- Defining_Identifier => S,
- Object_Definition => New_Reference_To (Standard_Integer, Loc)));
- return S;
- end Build_S;
-
- ------------------------
- -- Build_S_Assignment --
- ------------------------
-
- function Build_S_Assignment
- (Loc : Source_Ptr;
- S : Entity_Id;
- Obj : Entity_Id;
- Call_Ent : Entity_Id) return Node_Id
- is
- Typ : constant Entity_Id := Etype (Obj);
-
- begin
- if Tagged_Type_Expansion then
- return
- Make_Assignment_Statement (Loc,
- Name => New_Reference_To (S, Loc),
- Expression =>
- Make_Function_Call (Loc,
- Name => New_Reference_To (RTE (RE_Get_Offset_Index), Loc),
- Parameter_Associations => New_List (
- Unchecked_Convert_To (RTE (RE_Tag), Obj),
- Make_Integer_Literal (Loc, DT_Position (Call_Ent)))));
-
- -- VM targets
-
- else
- return
- Make_Assignment_Statement (Loc,
- Name => New_Reference_To (S, Loc),
- Expression =>
- Make_Function_Call (Loc,
- Name => New_Reference_To (RTE (RE_Get_Offset_Index), Loc),
-
- Parameter_Associations => New_List (
-
- -- Obj_Typ
-
- Make_Attribute_Reference (Loc,
- Prefix => Obj,
- Attribute_Name => Name_Tag),
-
- -- Iface_Typ
-
- Make_Attribute_Reference (Loc,
- Prefix => New_Reference_To (Typ, Loc),
- Attribute_Name => Name_Tag),
-
- -- Position
-
- Make_Integer_Literal (Loc, DT_Position (Call_Ent)))));
- end if;
- end Build_S_Assignment;
-
-end Exp_Sel;