ada: Fix inserting of validity checks in lock-free protected subprograms
authorPiotr Trojanek <trojanek@adacore.com>
Fri, 30 Sep 2022 14:56:37 +0000 (16:56 +0200)
committerMarc Poulhiès <poulhies@adacore.com>
Thu, 6 Oct 2022 09:22:48 +0000 (11:22 +0200)
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.

gcc/ada/exp_ch9.adb

index 8abff55..decf617 100644 (file)
@@ -2797,7 +2797,7 @@ package body Exp_Ch9 is
             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;