aboutsummaryrefslogtreecommitdiff
path: root/gcc/c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2022-04-20 09:54:49 +0200
committerPierre-Marie de Rodat <derodat@adacore.com>2022-05-30 08:29:01 +0000
commit3e93d2926aeefcffc978005b7964481f351dd494 (patch)
treecf09f68a5f04e970fda67498d91162d1c3aa09e6 /gcc/c
parent1ea22318caf52a98b32f8ef4e155376e7751db4b (diff)
downloadgcc-3e93d2926aeefcffc978005b7964481f351dd494.zip
gcc-3e93d2926aeefcffc978005b7964481f351dd494.tar.gz
gcc-3e93d2926aeefcffc978005b7964481f351dd494.tar.bz2
[Ada] Do not freeze profiles for dispatch tables
When static dispatch tables are built for library-level tagged types, the primitives (the subprogram themselves) are frozen; that's necessary because their address is taken. However, their profile, i.e. all the types present therein, is also frozen, which is not necessary after AI05-019 and is also inconsistent with the handling of attribute references. The change also removes a couple of pragma Inline on subprograms that are too large for inlining to bring any benefit. gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration): Adjust call to Make_DT. * exp_disp.ads (Building_Static_DT): Remove pragma Inline. (Building_Static_Secondary_DT): Likewise. (Convert_Tag_To_Interface): Likewise. (Make_DT): Remove second parameter. * exp_disp.adb (Make_DT): Likewise. (Check_Premature_Freezing): Delete. Pass Do_Freeze_Profile as False in call to Freeze_Entity. * freeze.ads (Freezing_Library_Level_Tagged_Type): Delete. * freeze.adb (Freeze_Profile): Remove obsolete code. (Freeze_Entity): Tweak comment.
Diffstat (limited to 'gcc/c')
0 files changed, 0 insertions, 0 deletions