[Ada] Restore full generation of static dispatch tables with -gnatzr
authorEric Botcazou <ebotcazou@adacore.com>
Sat, 21 May 2022 19:54:45 +0000 (21:54 +0200)
committerPierre-Marie de Rodat <derodat@adacore.com>
Thu, 2 Jun 2022 09:06:46 +0000 (09:06 +0000)
commitbbb9c475bff9e3646542fa5273433abc0300cf6a
treebdd4dc384f1e2f1fcab16adab1c6b309d4607e2e
parentda7cd04339b4db1bfdc4846eca2df04deca1a9b2
[Ada] Restore full generation of static dispatch tables with -gnatzr

The -gnatzr switch triggers the creation of distribution stubs for use
by the implementation of PolyORB.  Now these stubs declare tagged types
and are generated at the very end of the analysis of compilation units,
after the static dispatch tables have been built, so these tables are
missing for the tagged types of the stubs.

Therefore this change defers the generation of static dispatch tables
for compilation units, which is the common case, until after the stubs
are (potentially) generated.  For the other cases, in particular the
generic instances that are not compilation units, nothing is changed.

gcc/ada/

* exp_ch7.adb (Expand_N_Package_Body): Build static dispatch
tables only for units that are not compilation units, unless
they are generic instances.  Do not push a scope for this.
(Expand_N_Package_Declaration): Build static dispatch tables
only for units that are both not compilation units and generic
instances.
* exp_disp.adb (Build_Static_Dispatch_Tables): Remove redundant
early return.  Push a scope for package bodies.
* sem_ch10.adb: Add with and use clauses for Exp_Disp.
(Analyze_Compilation_Unit): Build static dispatch tables here.
gcc/ada/exp_ch7.adb
gcc/ada/exp_disp.adb
gcc/ada/sem_ch10.adb