Validity checks for statements in a lock-free implementation of
protected subprogram were wrongly inserted in front of the original
statements. This happened because the lock-free implementation was
created as a shallow copy, where only the protected body statements were
copied while its children still had the Parent pointing to the original
statements.
gcc/ada/
* exp_ch9.adb (Build_Lock_Free_Protected_Subprogram_Body): Replace
shallow copy of protected statements with a deep copy.
Expected_Comp : Entity_Id;
Stmt : Node_Id;
Stmts : List_Id :=
- New_Copy_List (Statements (Hand_Stmt_Seq));
+ New_Copy_List_Tree (Statements (Hand_Stmt_Seq));
Typ_Size : Int;
Unsigned : Entity_Id;