[Ada] fix crash on Secondary_Stack_Size with discriminant
This patch fixes a crash caused by specifying the Secondary_Stack_Size aspect of a task type as the value of a discriminant of the task type, and then declaring a record component whose type is the task type, constrained to a discriminant of the record. gcc/ada/ * sem_ch3.adb (Get_Discr_Value): Copy the result. Otherwise, the "tree" can be malformed (a DAG, not a tree) because Get_Discr_Value could be returning some subtree already attached to the tree.
This commit is contained in:
parent
470fff3d8e
commit
6281d36342
@ -13963,7 +13963,7 @@ package body Sem_Ch3 is
|
||||
or else D = CR_Discriminant (Discr_Id)
|
||||
or else Corresponding_Discriminant (D) = Discr_Id
|
||||
then
|
||||
return Node (E);
|
||||
return New_Copy_Tree (Node (E));
|
||||
end if;
|
||||
|
||||
Next_Discriminant (D);
|
||||
@ -13987,7 +13987,7 @@ package body Sem_Ch3 is
|
||||
E := First_Elmt (Constraints);
|
||||
while Present (D) loop
|
||||
if D = Discr_Id then
|
||||
return Node (E);
|
||||
return New_Copy_Tree (Node (E));
|
||||
end if;
|
||||
|
||||
Next_Discriminant (D);
|
||||
|
Loading…
Reference in New Issue
Block a user