Add assember CFI directives to millicode division and remainder routines.
[official-gcc.git] / gcc / ada / exp_ch12.adb
blobf5d35db9a4880a374248a69b2d94607095e46003
1 ------------------------------------------------------------------------------
2 -- --
3 -- GNAT COMPILER COMPONENTS --
4 -- --
5 -- E X P _ C H 1 2 --
6 -- --
7 -- B o d y --
8 -- --
9 -- Copyright (C) 1997-2023, Free Software Foundation, Inc. --
10 -- --
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. --
20 -- --
21 -- GNAT was originally developed by the GNAT team at New York University. --
22 -- Extensive contributions were provided by Ada Core Technologies Inc. --
23 -- --
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));
52 begin
53 if Etype (Name (N)) = Any_Type then
54 return;
55 end if;
57 if Present (Elaboration_Entity (Ent))
58 and then not Is_Compilation_Unit (Ent)
59 and then not Elaboration_Checks_Suppressed (Ent)
60 then
61 Insert_Action (Instance_Spec (N),
62 Make_Raise_Program_Error (Loc,
63 Condition =>
64 Make_Op_Not (Loc,
65 Right_Opnd =>
66 Make_Attribute_Reference (Loc,
67 Attribute_Name => Name_Elaborated,
68 Prefix => New_Occurrence_Of (Ent, Loc))),
69 Reason => PE_Access_Before_Elaboration));
70 end if;
71 end Expand_N_Generic_Instantiation;
73 end Exp_Ch12;