limited3_pkg.adb
448 Bytes
-
[Ada] Crash on aggregate for limited type in extended return · c14dc27e
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
Ed Schonberg committed