aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Duff <duff@adacore.com>2023-11-07 07:37:51 -0500
committerMarc Poulhiès <poulhies@adacore.com>2024-01-09 14:13:29 +0100
commit3b9d4258ea755c04f7a7ac1c5e054c098f4bbc93 (patch)
treee7abb9e3f1828d66014bf9de80986c458f424507
parentbfacdd11d992c47771574470987ae8954a5b12fd (diff)
downloadgcc-3b9d4258ea755c04f7a7ac1c5e054c098f4bbc93.zip
gcc-3b9d4258ea755c04f7a7ac1c5e054c098f4bbc93.tar.gz
gcc-3b9d4258ea755c04f7a7ac1c5e054c098f4bbc93.tar.bz2
ada: Avoid xref on out params of TSS
For an actual passed as an 'in out' parameter of a type support subprogram such as deep finalize, do not count it as a read reference of the actual. Clearly these should not count. Furthermore, counting them causes different warnings in -gnatc mode compared to normal mode, because the calls only exist in normal mode, which would disable the warnings. Such warnings now occur in both modes, instead of just with -gnatc. gcc/ada/ * lib-xref.adb (Generate_Reference): Do not count it as a read reference if we're calling a TSS.
-rw-r--r--gcc/ada/lib-xref.adb12
1 files changed, 9 insertions, 3 deletions
diff --git a/gcc/ada/lib-xref.adb b/gcc/ada/lib-xref.adb
index 3d6b298..340f5ca 100644
--- a/gcc/ada/lib-xref.adb
+++ b/gcc/ada/lib-xref.adb
@@ -29,6 +29,7 @@ with Einfo; use Einfo;
with Einfo.Utils; use Einfo.Utils;
with Elists; use Elists;
with Errout; use Errout;
+with Exp_Tss; use Exp_Tss;
with Lib.Util; use Lib.Util;
with Nlists; use Nlists;
with Opt; use Opt;
@@ -789,10 +790,15 @@ package body Lib.Xref is
elsif Kind = E_In_Out_Parameter
and then Is_Assignable (E)
then
- -- For sure this counts as a normal read reference
+ -- We count it as a read reference unless we're calling a
+ -- type support subprogram such as deep finalize.
- Set_Referenced (E);
- Set_Last_Assignment (E, Empty);
+ if not Is_Entity_Name (Name (Call))
+ or else Get_TSS_Name (Entity (Name (Call))) = TSS_Null
+ then
+ Set_Referenced (E);
+ Set_Last_Assignment (E, Empty);
+ end if;
-- We count it as being referenced as an out parameter if the
-- option is set to warn on all out parameters, except that we