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/sem_ch12.adb | |
parent | 775192706061030d927945619d3a41c5825e455d (diff) | |
download | gcc-94ce49419aef75f3414edcaeba89e63c6c3be320.tar.gz |
[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/sem_ch12.adb')
-rw-r--r-- | gcc/ada/sem_ch12.adb | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb index 0865f7b70d8..0cfb4119104 100644 --- a/gcc/ada/sem_ch12.adb +++ b/gcc/ada/sem_ch12.adb @@ -9106,8 +9106,8 @@ package body Sem_Ch12 is Clause := First (Current_Context); OK := True; while Present (Clause) loop - if Nkind (Clause) = N_With_Clause and then - Library_Unit (Clause) = Lib_Unit + if Nkind (Clause) = N_With_Clause + and then Library_Unit (Clause) = Lib_Unit then OK := False; exit; @@ -9118,8 +9118,8 @@ package body Sem_Ch12 is if OK then New_I := New_Copy (Item); - Set_Implicit_With (New_I, True); - Set_Implicit_With_From_Instantiation (New_I, True); + Set_Implicit_With (New_I); + Append (New_I, Current_Context); end if; end if; |