This is the mail archive of the
gcc-cvs@gcc.gnu.org
mailing list for the GCC project.
r272987 - in /trunk/gcc/ada: ChangeLog binde.ad...
- From: pmderodat at gcc dot gnu dot org
- To: gcc-cvs at gcc dot gnu dot org
- Date: Wed, 03 Jul 2019 08:16:29 -0000
- Subject: r272987 - in /trunk/gcc/ada: ChangeLog binde.ad...
Author: pmderodat
Date: Wed Jul 3 08:16:29 2019
New Revision: 272987
URL: https://gcc.gnu.org/viewcvs?rev=272987&root=gcc&view=rev
Log:
[Ada] Forced elaboration order in Elaboration order v4.0
This patch refactors the forced elaboration order functionality,
reintegrates it in Binde, and impelements it in Bindo.
------------
-- Source --
------------
-- server.ads
package Server is
end Server;
-- client.ads
with Server;
package Client is
end Client;
-- main.adb
with Client;
procedure Main is begin null; end Main;
-- duplicate_1.txt
server (spec)
client (spec)
server (spec)
-- error_unit_1.txt
no such unit
client (spec)
-- error_unit_2.txt
no such unit
client (spec)
-- error_unit_3.txt
no such unit -- comment
client (spec)
-- error_unit_4.txt
no such unit -- comment
client (spec)
-- error_unit_5.txt
no such unit (body)
client (spec)
-- error_unit_6.txt
no such unit (body)
client (spec)
-- error_unit_7.txt
no such unit (body) -- comment
client (spec)
-- error_unit_8.txt
no such unit (body)-- comment
client (spec)
-- error_unit_9.txt
no such unit-- comment
client (spec)
-- no_unit_1.txt
-- no_unit_2.txt
-- no_unit_3.txt
-- comment
-- no_unit_4.txt
-- no_unit_5.txt
-- no_unit_6.txt
-- comment
-- no_unit_7.txt
-- no_unit_8.txt
-- comment
-- comment
-- ok_unit_1.txt
server (spec)
client (spec)
-- ok_unit_2.txt
server (spec)
client (spec)
-- ok_unit_3.txt
server (spec)
client (spec)
-- ok_unit_4.txt
server (spec) -- comment
client (spec)
-- ok_unit_5.txt
server (spec)
client (spec)
-- ok_unit_6.txt
server (spec)
client (spec) -- comment
-- ok_unit_7.txt
server (spec)
client (spec) -- comment
-- ok_unit_8.txt
-- comment
-- comment
server (spec)
-- comment
-- comment
client (spec) -- comment
-- ok_unit_9.txt
server (spec)-- comment
client (spec)
----------------------------
-- Compilation and output --
----------------------------
$ gnatmake -q main.adb
$ gnatbind -fno_unit_1.txt main.ali
$ gnatbind -fno_unit_2.txt main.ali
$ gnatbind -fno_unit_3.txt main.ali
$ gnatbind -fno_unit_4.txt main.ali
$ gnatbind -fno_unit_5.txt main.ali
$ gnatbind -fno_unit_6.txt main.ali
$ gnatbind -fno_unit_7.txt main.ali
$ gnatbind -fno_unit_8.txt main.ali
$ gnatbind -ferror_unit_1.txt main.ali
$ gnatbind -ferror_unit_2.txt main.ali
$ gnatbind -ferror_unit_3.txt main.ali
$ gnatbind -ferror_unit_4.txt main.ali
$ gnatbind -ferror_unit_5.txt main.ali
$ gnatbind -ferror_unit_6.txt main.ali
$ gnatbind -ferror_unit_7.txt main.ali
$ gnatbind -ferror_unit_8.txt main.ali
$ gnatbind -ferror_unit_9.txt main.ali
$ gnatbind -fduplicate_1.txt main.ali
$ gnatbind -fok_unit_1.txt main.ali
$ gnatbind -fok_unit_2.txt main.ali
$ gnatbind -fok_unit_3.txt main.ali
$ gnatbind -fok_unit_4.txt main.ali
$ gnatbind -fok_unit_5.txt main.ali
$ gnatbind -fok_unit_6.txt main.ali
$ gnatbind -fok_unit_7.txt main.ali
$ gnatbind -fok_unit_8.txt main.ali
$ gnatbind -fok_unit_9.txt main.ali
"no such unit": not present; ignored
"no such unit": not present; ignored
"no such unit": not present; ignored
"no such unit": not present; ignored
"no such unit%b": not present; ignored
"no such unit%b": not present; ignored
"no such unit%b": not present; ignored
"no such unit%b": not present; ignored
"no such unit": not present; ignored
server (spec) <-- client (spec)
error: duplicate_1.txt:3: duplicate unit name "server (spec)" from line 1
server (spec) <-- client (spec)
server (spec) <-- client (spec)
server (spec) <-- client (spec)
server (spec) <-- client (spec)
server (spec) <-- client (spec)
server (spec) <-- client (spec)
server (spec) <-- client (spec)
server (spec) <-- client (spec)
server (spec) <-- client (spec)
2019-07-03 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* binde.adb: Remove with clause for System.OS_Lib.
(Force_Elab_Order): Refactor the majority of the code in Butil.
Use the new forced units iterator to obtain unit names.
* bindo-builders.adb: Add with and use clauses for Binderr,
Butil, Opt, Output, Types, GNAT, and GNAT.Dynamic_HTables. Add
a hash table which maps units to line number in the forced
elaboration order file.
(Add_Unit): New routine.
(Build_Library_Graph): Create forced edges between pairs of
units listed in the forced elaboration order file.
(Create_Forced_Edge, Create_Forced_Edges, Destroy_Line_Number,
Duplicate_Unit_Error, Hash_Unit, Internal_Unit_Info,
Is_Duplicate_Unit, Missing_Unit_Info): New routines.
* bindo-graphs.adb (Is_Internal_Unit, Is_Predefined_Unit):
Refactor some of the behavior to Bindo-Units.
* bindo-graphs.ads: Enable the enumeration literal for forced
edges.
* bindo-units.adb, bindo-units.ads (Is_Internal_Unit,
Is_Predefined_Unit): New routines.
* butil.adb: Add with and use clauses for Opt, GNAT, and
System.OS_Lib. Add with clause for Unchecked_Deallocation.
(Has_Next, Iterate_Forced_Units, Next, Parse_Next_Unit_Name,
Read_Forced_Elab_Order_File): New routines.
* butil.ads: Add with and use clauses for Types. Add new
iterator over the units listed in the forced elaboration order
file.
(Has_Next, Iterate_Forced_Units, Next): New routine.
* namet.adb, namet.ads (Present): New routine.
Modified:
trunk/gcc/ada/ChangeLog
trunk/gcc/ada/binde.adb
trunk/gcc/ada/bindo-builders.adb
trunk/gcc/ada/bindo-graphs.adb
trunk/gcc/ada/bindo-graphs.ads
trunk/gcc/ada/bindo-units.adb
trunk/gcc/ada/bindo-units.ads
trunk/gcc/ada/butil.adb
trunk/gcc/ada/butil.ads
trunk/gcc/ada/namet.adb
trunk/gcc/ada/namet.ads