1 ------------------------------------------------------------------------------
3 -- GNAT COMPILER COMPONENTS --
9 -- Copyright (C) 1997-2021, Free Software Foundation, Inc. --
11 -- GNAT is free software; you can redistribute it and/or modify it under --
12 -- terms of the GNU General Public License as published by the Free Soft- --
13 -- ware Foundation; either version 3, or (at your option) any later ver- --
14 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
15 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
16 -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
17 -- for more details. You should have received a copy of the GNU General --
18 -- Public License distributed with GNAT; see file COPYING3. If not, go to --
19 -- http://www.gnu.org/licenses for a complete copy of the license. --
21 -- GNAT was originally developed by the GNAT team at New York University. --
22 -- Extensive contributions were provided by Ada Core Technologies Inc. --
24 ------------------------------------------------------------------------------
26 with Atree; use Atree;
27 with Checks; use Checks;
28 with Einfo; use Einfo;
29 with Einfo.Entities; use Einfo.Entities;
30 with Exp_Util; use Exp_Util;
31 with Nmake; use Nmake;
32 with Sinfo; use Sinfo;
33 with Sinfo.Nodes; use Sinfo.Nodes;
34 with Sinfo.Utils; use Sinfo.Utils;
35 with Snames; use Snames;
36 with Stand; use Stand;
37 with Tbuild; use Tbuild;
39 package body Exp_Ch12 is
41 ------------------------------------
42 -- Expand_N_Generic_Instantiation --
43 ------------------------------------
45 -- If elaboration entity is defined and this is not an outer level entity,
46 -- we need to generate a check for it here.
48 procedure Expand_N_Generic_Instantiation (N : Node_Id) is
49 Loc : constant Source_Ptr := Sloc (N);
50 Ent : constant Entity_Id := Entity (Name (N));
53 if Etype (Name (N)) = Any_Type then
57 if Present (Elaboration_Entity (Ent))
58 and then not Is_Compilation_Unit (Ent)
59 and then not Elaboration_Checks_Suppressed (Ent)
61 Insert_Action (Instance_Spec (N),
62 Make_Raise_Program_Error (Loc,
66 Make_Attribute_Reference (Loc,
67 Attribute_Name => Name_Elaborated,
68 Prefix => New_Occurrence_Of (Ent, Loc))),
69 Reason => PE_Access_Before_Elaboration));
71 end Expand_N_Generic_Instantiation;