[Ada] Crash freezing declaration that will raise constraint error
authorJavier Miranda <miranda@adacore.com>
Sun, 20 Mar 2022 11:36:25 +0000 (11:36 +0000)
committerPierre-Marie de Rodat <derodat@adacore.com>
Tue, 17 May 2022 08:25:42 +0000 (08:25 +0000)
commit6c72dc7d602f45d086a9651e623a4e68fa96fab6
tree889b7c5db0e0e72d9d4d50b90237bc728ee54734
parentc30e5ab027a59a2ffcf7fb2d093ce2b64de712eb
[Ada] Crash freezing declaration that will raise constraint error

When the compiler is built with assertions enabled and processes the
following declarations:

   type Vector_Boolean_Array is array (1 .. 10) of Boolean;
   O2 : constant Vector_Boolean_Array := [for J in 2 => True];

The expression is rewritten by the frontend with an N_Raise_CE node,
which leads to an assertion error at the freezing point of the object
declaration.

gcc/ada/

* freeze.adb (Freeze_Entity): Protect the call to
Declaration_Node against entities of expressions replaced by the
frontend with an N_Raise_CE node.
gcc/ada/freeze.adb