GNATcoverage possibly relies on the presence of the duplicate D lines in ALI
files for its Source Coverage Obligation tables among different instantiations
of a same generic. Mention this in comments.
Tested on x86_64-pc-linux-gnu, committed on trunk
gcc/ada/
* lib-writ.ads: Mention SCOs dependency as reason for duplicates.
* lib.ads (Units): Update documentation to mention duplicated
units.
diff --git a/gcc/ada/lib-writ.ads b/gcc/ada/lib-writ.ads
--- a/gcc/ada/lib-writ.ads
+++ b/gcc/ada/lib-writ.ads
@@ -1053,6 +1053,9 @@ package Lib.Writ is
-- The Object parameter is true if an object file is created, and false
-- otherwise. Note that the pseudo-object file generated in GNATprove mode
-- does count as an object file from this point of view.
+ -- May output duplicate D lines caused by generic instantiations. This is
+ -- by design as GNATcoverage relies on them for its coverage of generic
+ -- instantiations, although this may be revisited in the future.
procedure Add_Preprocessing_Dependency (S : Source_File_Index);
-- Indicate that there is a dependency to be added on a preprocessing data
diff --git a/gcc/ada/lib.ads b/gcc/ada/lib.ads
--- a/gcc/ada/lib.ads
+++ b/gcc/ada/lib.ads
@@ -926,7 +926,9 @@ private
-- The following table records a mapping between a name and the entry in
-- the units table whose Unit_Name is this name. It is used to speed up
-- the Is_Loaded function, whose original implementation (linear search)
- -- could account for 2% of the time spent in the front end. Note that, in
+ -- could account for 2% of the time spent in the front end. When the unit
+ -- is an instance of a generic, the unit might get duplicated in the unit
+ -- table - see Make_Instance_Unit for more information. Note that, in
-- the case of source files containing multiple units, the units table may
-- temporarily contain two entries with the same Unit_Name during parsing,
-- which means that the mapping must be to the first entry in the table.