aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2018-12-03 15:49:23 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2018-12-03 15:49:23 +0000
commit2a1838cda7a0b88905580cc174ecd84960b7d957 (patch)
treed465b90df9ed80cbb9b228954cfacd6c8fd8eae7 /gcc/fortran
parentd71753da57c28ded0e9d392c119ffbcdc0396360 (diff)
downloadgcc-2a1838cda7a0b88905580cc174ecd84960b7d957.zip
gcc-2a1838cda7a0b88905580cc174ecd84960b7d957.tar.gz
gcc-2a1838cda7a0b88905580cc174ecd84960b7d957.tar.bz2
[Ada] Fix recent regression on array aggregate with dynamic subtype
This prevents either a crash or an assertion failure in gigi on an array with dynamic subtype that is wrongly flagged as static by the front-end because of a recent improvement made in the handling of nested aggregates. The patch reuses the existing Static_Array_Aggregate predicate instead of fixing the problematic test, pluging a few loopholes in the process. The predicate is conservatively correct but should be good enough in practice. 2018-12-03 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_aggr.adb (Convert_To_Positional): Use Static_Array_Aggregate to decide whether to set Compile_Time_Known_Aggregate on an already flat aggregate. (Expand_Array_Aggregate): Remove test on Compile_Time_Known_Aggregate that turns out to be dead and simplify. (Is_Static_Component): New predicate extracted from... (Static_Array_Aggregate): ...here. Test neither Is_Tagged_Type nor Is_Controlled for the type, but test whether the component type has discriminants. Use the Is_Static_Component predicate consistently for the positional and named cases. gcc/testsuite/ * gnat.dg/array32.adb, gnat.dg/array32.ads: New testcase. From-SVN: r266755
Diffstat (limited to 'gcc/fortran')
0 files changed, 0 insertions, 0 deletions