diff options
author | Hristian Kirtchev <kirtchev@adacore.com> | 2019-07-09 07:55:12 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2019-07-09 07:55:12 +0000 |
commit | f0bfd1f91fdba41a6d9fa7ada6e02ea8121f604c (patch) | |
tree | 34211f3c7c46707a6e7281503fb3048a36528195 /libcpp/line-map.c | |
parent | 64ac53f4c4e1ecbf753ce764bfd9083aa0141323 (diff) | |
download | gcc-f0bfd1f91fdba41a6d9fa7ada6e02ea8121f604c.zip gcc-f0bfd1f91fdba41a6d9fa7ada6e02ea8121f604c.tar.gz gcc-f0bfd1f91fdba41a6d9fa7ada6e02ea8121f604c.tar.bz2 |
[Ada] Elaboration order v4.0 and generic instantiations
This patch updates the library graph augmentation mechanism of the
elaboration order v4.0 to emulate a particular behavior of the v3.0
scheme involving generic instantiations. If a unit without any
elaboration code instantiates a generic without any elaboration code,
the invocation edge from the instance to the generic body is not
considered for library graph augmentation.
------------
-- Source --
------------
-- gen_pack1.ads
generic
type Element_Type is private;
package Gen_Pack1 is
procedure Read;
end Gen_Pack1;
-- gen_pack1.adb
with Types1;
package body Gen_Pack1 is
procedure Read is null;
end Gen_Pack1;
-- types1.ads
with Gen_Pack1;
package Types1 is
procedure Read;
package Optional_Numbers is new Gen_Pack1 (Positive);
end Types1;
-- main1.adb
with Types1;
procedure Main1 is
begin
Types1.Optional_Numbers.Read;
end Main1;
-----------------
-- Compilation --
-----------------
$ gnatmake -q main1.adb
2019-07-09 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* bindo-augmentors.adb (Visit_Elaboration_Root): Do not start a
DFS from an elaboration root whose corresponding unit lacks
elaboration code. This behavior mimics that of the old
elaboration order mechanism.
* bindo-graphs.adb (Find_All_Cycles_Through_Vertex): Move the
vertex tracing within the functional branches of the routine.
This prevents spurious trace output.
(Has_No_Elaboration_Code): New routine.
(Trace_Cycle, Trace_Edge): Update the various Ids to use the
"standard" trace format.
* bindo-graphs.ads (Has_No_Elaboration_Code): New routine.
* bindo-units.ads, bindo-units.adb (Has_No_Elaboration_Code):
New routine.
From-SVN: r273288
Diffstat (limited to 'libcpp/line-map.c')
0 files changed, 0 insertions, 0 deletions