aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface
diff options
context:
space:
mode:
authorJavier Miranda <miranda@adacore.com>2022-04-13 16:27:59 +0000
committerPierre-Marie de Rodat <derodat@adacore.com>2022-05-19 14:05:31 +0000
commit8a03acaace9544249583e630153e73d53ccfaec7 (patch)
treef7895b37741485d2512a7eaafc7f919a3e40b203 /gcc/ada/gcc-interface
parenteff70bcc1f1e808e3cc253a8452b7849329d549a (diff)
downloadgcc-8a03acaace9544249583e630153e73d53ccfaec7.zip
gcc-8a03acaace9544249583e630153e73d53ccfaec7.tar.gz
gcc-8a03acaace9544249583e630153e73d53ccfaec7.tar.bz2
[Ada] Wrong interface dynamic dispatch via access parameter
When the prefix of an Access attribute is an explicit dereference of an access parameter (or a renaming of such a dereference, or a subcomponent of such a dereference), the context is a general access type to a class-wide interface type, and an accessibility check must be generated, the frontend silently skips generating an implicit type conversion to force the displacement of the pointer to reference the secondary dispatch table. gcc/ada/ * exp_attr.adb (Add_Implicit_Interface_Type_Conversion): New subprogram which factorizes code. (Expand_N_Attribute_Reference): Call the new subprogram to add the missing implicit interface type conversion.
Diffstat (limited to 'gcc/ada/gcc-interface')
0 files changed, 0 insertions, 0 deletions