mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 14:59:39 +02:00
ada: Compiler crash on container aggregate association with nonstatic key choice
The compiler blows up on a container aggregate with a container element association that has a key_choice given by a nonstatic key expression. This happens in the size computation for the aggregate due to calling Update_Choices with the nonstatic expression. The fix is simply to condition the call to Update_Choices on whether the choice expression is static. gcc/ada/ChangeLog: * exp_aggr.adb (Build_Container_Aggr_Code.Build_Size_Expr): In the case of an association with a single choice, only call Update_Choices when the choice expression is nonstatic.
This commit is contained in:
committed by
Marc Poulhiès
parent
629f1de233
commit
767fce326e
@@ -6984,7 +6984,9 @@ package body Exp_Aggr is
|
||||
-- Choice is a single discrete value
|
||||
|
||||
elsif Is_Discrete_Type (Etype (Choice)) then
|
||||
Update_Choices (Choice, Choice);
|
||||
if Is_Static_Expression (Choice) then
|
||||
Update_Choices (Choice, Choice);
|
||||
end if;
|
||||
|
||||
Temp_Siz_Exp := Make_Integer_Literal (Loc, 1);
|
||||
Set_Is_Static_Expression (Temp_Siz_Exp);
|
||||
|
||||
Reference in New Issue
Block a user