diff mbox series

[Ada] Fix warning about generic subprograms withed but not referenced

Message ID 20220512124011.GA781121@adacore.com
State New
Headers show
Series [Ada] Fix warning about generic subprograms withed but not referenced | expand

Commit Message

Pierre-Marie de Rodat May 12, 2022, 12:40 p.m. UTC
For warnings about unreferenced entities and unused WITH clauses we
typically exclude references outside of the extended main source unit.
However, we include references to variables of formal private types to
warn in the instance if the corresponding type is not a fully
initialized type.

This special case was unnecessarily applied to references to other
entities of formal private types. In particular, we applied it to the
references to generic functions, where the full initialization of the
formal private type doesn't matter.

As an extreme example, this special case was unnecessarily applied to
"pragma Pure (Unchecked_Conversion)" in the runtime unit.

Tested on x86_64-pc-linux-gnu, committed on trunk

gcc/ada/

	* lib-xref.adb (Generate_Reference): Fix comment and implement
	it precisely.
diff mbox series

Patch

diff --git a/gcc/ada/lib-xref.adb b/gcc/ada/lib-xref.adb
--- a/gcc/ada/lib-xref.adb
+++ b/gcc/ada/lib-xref.adb
@@ -664,7 +664,7 @@  package body Lib.Xref is
       --  a default in an instance.
 
       --  We also set the referenced flag in a generic package that is not in
-      --  then main source unit, when the variable is of a formal private type,
+      --  the main source unit, when the object is of a formal private type,
       --  to warn in the instance if the corresponding type is not a fully
       --  initialized type.
 
@@ -694,6 +694,7 @@  package body Lib.Xref is
             return;
 
          elsif Inside_A_Generic
+           and then Is_Object (E)
            and then Is_Generic_Type (Etype (E))
          then
             Set_Referenced (E);