[Ada] Fix discrepancy in mechanism tracking private and full views
This fixes a discrepancy in the mechanism tracking the private and full views of entities when entering and leaving scopes. This mechanism records private entities that are dependent on other private entities, so that the exchange done on entering and leaving scopes can be propagated. The propagation is done recursively on entering child units, but it was not done recursively on leaving them, which would leave the dependency chains in a uncertain state in this case. That's mostly visible when inlining across units is enabled for code involving a lot of generic units. 2019-08-14 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * sem_ch7.adb (Install_Private_Declarations) <Swap_Private_Dependents>: Do not rely solely on the Is_Child_Unit flag on the unit to recurse. (Uninstall_Declarations) <Swap_Private_Dependents>: New function. Use it to recurse on the private dependent entities for child units. gcc/testsuite/ * gnat.dg/inline18.adb, gnat.dg/inline18.ads, gnat.dg/inline18_gen1-inner_g.ads, gnat.dg/inline18_gen1.adb, gnat.dg/inline18_gen1.ads, gnat.dg/inline18_gen2.adb, gnat.dg/inline18_gen2.ads, gnat.dg/inline18_gen3.adb, gnat.dg/inline18_gen3.ads, gnat.dg/inline18_pkg1.adb, gnat.dg/inline18_pkg1.ads, gnat.dg/inline18_pkg2-child.ads, gnat.dg/inline18_pkg2.ads: New testcase. From-SVN: r274451
Showing
gcc/testsuite/gnat.dg/inline18.adb
0 → 100644
gcc/testsuite/gnat.dg/inline18.ads
0 → 100644
gcc/testsuite/gnat.dg/inline18_gen1.adb
0 → 100644
gcc/testsuite/gnat.dg/inline18_gen1.ads
0 → 100644
gcc/testsuite/gnat.dg/inline18_gen2.adb
0 → 100644
gcc/testsuite/gnat.dg/inline18_gen2.ads
0 → 100644
gcc/testsuite/gnat.dg/inline18_gen3.adb
0 → 100644
gcc/testsuite/gnat.dg/inline18_gen3.ads
0 → 100644
gcc/testsuite/gnat.dg/inline18_pkg1.adb
0 → 100644
gcc/testsuite/gnat.dg/inline18_pkg1.ads
0 → 100644
gcc/testsuite/gnat.dg/inline18_pkg2.ads
0 → 100644
Please
register
or
sign in
to comment