[Ada] Wrong accessibility level under -gnat12
authorJavier Miranda <miranda@adacore.com>
Fri, 5 Jul 2019 07:02:46 +0000 (07:02 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Fri, 5 Jul 2019 07:02:46 +0000 (07:02 +0000)
commit43fa58c26a05f206ac36ab7d0340744c2769424f
tree160dcd1b3ea263365e0e36844a46f56c5e69bbb5
parent6cc855048364cdfe4960e9f960e619efce6a9e4a
[Ada] Wrong accessibility level under -gnat12

For an anonymous allocator whose type is that of a stand-alone object of
an anonymous access-to-object type, the accessibility level is that of
the declaration of the stand-alone object; however it was incorrectly
computed as being library level compiling under -gnat12 mode.

2019-07-05  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* exp_ch4.adb (Expand_N_Type_Conversion): Do not apply an
accessibility check when the conversion is an access to
class-wide interface type and it is an actual parameter.
* exp_ch6.adb (Expand_Call_Helper): Add documentation on the
accessibility level of an anonymous allocator defining the value
of an access parameter.
* sem_util.ads, sem_util.adb (Dynamic_Accessibility_Level): Add
support for an anonymous allocator whose type is that of a
stand-alone object of an anonymous access to object type.

gcc/testsuite/

* gnat.dg/access6.adb: New testcase.

From-SVN: r273115
gcc/ada/ChangeLog
gcc/ada/exp_ch4.adb
gcc/ada/exp_ch6.adb
gcc/ada/sem_util.adb
gcc/ada/sem_util.ads
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/access6.adb [new file with mode: 0644]