diff options
author | Hristian Kirtchev <kirtchev@adacore.com> | 2018-01-11 08:51:13 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2018-01-11 08:51:13 +0000 |
commit | 94ce49419aef75f3414edcaeba89e63c6c3be320 (patch) | |
tree | 57ecfd78c9e0afab4a505645053aa796cd2a059b /gcc/ada/csinfo.adb | |
parent | 775192706061030d927945619d3a41c5825e455d (diff) | |
download | gcc-94ce49419aef75f3414edcaeba89e63c6c3be320.zip gcc-94ce49419aef75f3414edcaeba89e63c6c3be320.tar.gz gcc-94ce49419aef75f3414edcaeba89e63c6c3be320.tar.bz2 |
[Ada] Encoding of with clauses in ALI files
This patch modifies the encodings of with clauses in ALI files to adhere to the
existing API. The encodigs are as follows:
* Explicit with clauses are encoded on a 'W' line (same as before).
* Implicit with clauses for ancestor units are encoded on a 'W' line (same
as before).
* Limited_with clauses are encoded on a 'Y' line (same as before).
* ABE and RTSfind-related with clauses are encoded on a 'Z' line.
------------
-- Source --
------------
-- case_10_func.adb
function Case_10_Func return Boolean is
begin
return True;
end Case_10_Func;
-- case_10_gen_func.ads
generic
function Case_10_Gen_Func return Boolean;
-- case_10_gen_func.adb
function Case_10_Gen_Func return Boolean is
begin
return True;
end Case_10_Gen_Func;
-- case_10_tasks.ads
package Case_10_Tasks is
task type Task_Typ is
end Task_Typ;
end Case_10_Tasks;
-- case_10_tasks.adb
package body Case_10_Tasks is
task body Task_Typ is begin null; end Task_Typ;
end Case_10_Tasks;
-- case_10_gen.ads
with Case_10_Func;
with Case_10_Gen_Func;
with Case_10_Tasks;
generic
package Case_10_Gen is
Val : constant Boolean := Case_10_Func;
function Inst is new Case_10_Gen_Func;
Tsk : Case_10_Tasks.Task_Typ;
end Case_10_Gen;
-- case_10.ads
with Case_10_Gen;
package Case_10 is
package Inst is new Case_10_Gen;
end Case_10;
----------------------------
-- Compilation and output --
----------------------------
$ gcc -c case_10.ads
$ grep "W " case_10.ali | sort
$ grep "Z " case_10.ali | sort
W case_10_gen%s case_10_gen.ads case_10_gen.ali
Z case_10_func%b case_10_func.adb case_10_func.ali
Z case_10_gen_func%s case_10_gen_func.adb case_10_gen_func.ali ED
Z case_10_tasks%s case_10_tasks.adb case_10_tasks.ali AD
Z system.soft_links%s s-soflin.adb s-soflin.ali
Z system.tasking%s s-taskin.adb s-taskin.ali
Z system.tasking.stages%s s-tassta.adb s-tassta.ali
2018-01-11 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* ali.adb: Document the remaining letters available for ALI lines.
(Scan_ALI): A with clause is internal when it is encoded on a 'Z' line.
* ali.ads: Update type With_Record. Field
Implicit_With_From_Instantiation is no longer in use. Add field
Implicit_With.
* csinfo.adb (CSinfo): Remove the setup for attribute
Implicit_With_From_Instantiation.
* lib-writ.adb (Collect_Withs): Correct the logic which marks a unit as
either implicitly or explicitly withed.
(Is_Implicit_With_Clause): New routine.
(Write_ALI): Rename array Implicit_With to Has_Implicit_With to avoid
confusion with the with clause attribute by the same name.
(Write_With_Lines): Update the emission of 'W', 'Y', and 'Z' headers.
* rtsfind.adb (Maybe_Add_With): Code cleanup.
* sem_ch8.adb (Present_System_Aux): Code cleanup.
* sem_ch10.adb (Expand_With_Clause): Mark the with clause as generated
for a parent unit.
(Implicit_With_On_Parent): Mark the with clause as generated for a
parent unit.
* sem_ch12.adb (Inherit_Context): With clauses inherited by an
instantiation are no longer marked as Implicit_With_From_Instantiation
because they are already marked as implicit.
* sem_elab.adb (Ensure_Prior_Elaboration_Static): Remove the kludge
which marks implicit with clauses as related to an instantiation.
* sinfo.adb (Implicit_With_From_Instantiation): Removed.
(Parent_With): New routine.
(Set_Implicit_With_From_Instantiation): Removed.
(Set_Parent_With): New routine.
* sinfo.ads: Update the documentation of attribute Implicit_With.
Remove attribute Implicit_With_From_Instantiation along with
occurrences in nodes. Add attribute Parent_With along with occurrences
in nodes.
(Implicit_With_From_Instantiation): Removed along with pragma Inline.
(Parent_With): New routine along with pragma Inline.
(Set_Implicit_With_From_Instantiation): Removed along with pragma Inline.
(Set_Parent_With): New routine along with pragma Inline.
From-SVN: r256490
Diffstat (limited to 'gcc/ada/csinfo.adb')
-rw-r--r-- | gcc/ada/csinfo.adb | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/gcc/ada/csinfo.adb b/gcc/ada/csinfo.adb index 1a71a2e..c660899 100644 --- a/gcc/ada/csinfo.adb +++ b/gcc/ada/csinfo.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2012, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2017, 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- -- @@ -218,7 +218,6 @@ begin Set (Special, "Has_Dynamic_Range_Check", True); Set (Special, "Has_Dynamic_Length_Check", True); Set (Special, "Has_Private_View", True); - Set (Special, "Implicit_With_From_Instantiation", True); Set (Special, "Is_Controlling_Actual", True); Set (Special, "Is_Overloaded", True); Set (Special, "Is_Static_Expression", True); |