aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/init.c
diff options
context:
space:
mode:
authorEd Schonberg <schonberg@adacore.com>2019-07-10 09:02:47 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2019-07-10 09:02:47 +0000
commitc14dc27e91ccd6bdc86ac0b875892396dc84a985 (patch)
tree4979f01bbad8ef0e0eca5da05e71825604d6d14d /gcc/ada/init.c
parent179682a55cbe229442cf3886e338148be0b12a96 (diff)
downloadgcc-c14dc27e91ccd6bdc86ac0b875892396dc84a985.zip
gcc-c14dc27e91ccd6bdc86ac0b875892396dc84a985.tar.gz
gcc-c14dc27e91ccd6bdc86ac0b875892396dc84a985.tar.bz2
[Ada] Crash on aggregate for limited type in extended return
This patch fixes a compiler abort on an extended return statement whose expression is an aggregate (to be built in place) for a discriminated record with a limited component. The build-in-place mechanism creates an access type and a renaming declaration through which individual components are assigned. The renamed object is constrained because it is limited, and the renaming declaration does not need to create a local subtype indication for it, which may lead to type mismatches in the back-end, and is in any case redundant. This patch extends this optimization to the case of records that are limited only because of a limitied component, and not because they are explicit declared limited. 2019-07-10 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch8.adb (Check_Constrained_Object): A record that is limited because of the presence of a limited component is constrained, and no subtype indiciation needs to be created for it, just as is the case for declared limited records. gcc/testsuite/ * gnat.dg/limited3.adb, gnat.dg/limited3_pkg.adb, gnat.dg/limited3_pkg.ads: New testcase. From-SVN: r273350
Diffstat (limited to 'gcc/ada/init.c')
0 files changed, 0 insertions, 0 deletions