aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2022-05-20 19:06:28 +0200
committerPierre-Marie de Rodat <derodat@adacore.com>2022-06-02 09:06:46 +0000
commitda7cd04339b4db1bfdc4846eca2df04deca1a9b2 (patch)
tree375733322f45e3e7a664f5fcd421a8968ed82347
parentb05a31e579ec2e46c46c4b3f36fffdf0e959bd1f (diff)
downloadgcc-da7cd04339b4db1bfdc4846eca2df04deca1a9b2.zip
gcc-da7cd04339b4db1bfdc4846eca2df04deca1a9b2.tar.gz
gcc-da7cd04339b4db1bfdc4846eca2df04deca1a9b2.tar.bz2
[Ada] Never make symbols for thunks public
Thunks are only referenced locally by dispatch tables and never inlined. gcc/ada/ * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Clear the Is_Public flag on thunks.
-rw-r--r--gcc/ada/sem_ch6.adb7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb
index 8fd88ad..848c2349 100644
--- a/gcc/ada/sem_ch6.adb
+++ b/gcc/ada/sem_ch6.adb
@@ -4772,6 +4772,13 @@ package body Sem_Ch6 is
if Nkind (N) /= N_Subprogram_Body
or else not Was_Expression_Function (N)
then
+ -- First clear the Is_Public flag on thunks since they are only
+ -- referenced locally by dispatch tables and thus never inlined.
+
+ if Is_Thunk (Body_Id) then
+ Set_Is_Public (Body_Id, False);
+ end if;
+
Freeze_Before (N, Body_Id);
end if;