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/sinfo.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/sinfo.adb')
-rw-r--r-- | gcc/ada/sinfo.adb | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/gcc/ada/sinfo.adb b/gcc/ada/sinfo.adb index 1790b56..c1193d7 100644 --- a/gcc/ada/sinfo.adb +++ b/gcc/ada/sinfo.adb @@ -1680,14 +1680,6 @@ package body Sinfo is return Flag16 (N); end Implicit_With; - function Implicit_With_From_Instantiation - (N : Node_Id) return Boolean is - begin - pragma Assert (False - or else NT (N).Nkind = N_With_Clause); - return Flag12 (N); - end Implicit_With_From_Instantiation; - function Interface_List (N : Node_Id) return List_Id is begin @@ -2766,6 +2758,14 @@ package body Sinfo is return Node4 (N); end Parent_Spec; + function Parent_With + (N : Node_Id) return Boolean is + begin + pragma Assert (False + or else NT (N).Nkind = N_With_Clause); + return Flag1 (N); + end Parent_With; + function Position (N : Node_Id) return Node_Id is begin @@ -5147,14 +5147,6 @@ package body Sinfo is Set_Flag16 (N, Val); end Set_Implicit_With; - procedure Set_Implicit_With_From_Instantiation - (N : Node_Id; Val : Boolean := True) is - begin - pragma Assert (False - or else NT (N).Nkind = N_With_Clause); - Set_Flag12 (N, Val); - end Set_Implicit_With_From_Instantiation; - procedure Set_Interface_List (N : Node_Id; Val : List_Id) is begin @@ -6233,6 +6225,14 @@ package body Sinfo is Set_Node4 (N, Val); -- semantic field, no parent set end Set_Parent_Spec; + procedure Set_Parent_With + (N : Node_Id; Val : Boolean := True) is + begin + pragma Assert (False + or else NT (N).Nkind = N_With_Clause); + Set_Flag1 (N, Val); + end Set_Parent_With; + procedure Set_Position (N : Node_Id; Val : Node_Id) is begin |