[Ada] Do not return freeze nodes for start of early call regions
gcc/ada/ * sem_elab.adb (Previous_Suitable_Construct): New function declared in the Early_Call_Region_Processor package. (Find_ECR): Call it to get the previous node at the start. (Include): Call it to get the previous node during the traversal.
This commit is contained in:
parent
9ce9322ccc
commit
bbafa6251e
|
@ -6965,6 +6965,11 @@ package body Sem_Elab is
|
|||
-- Determine whether arbitrary node N denotes a suitable construct
|
||||
-- for inclusion into the early call region.
|
||||
|
||||
function Previous_Suitable_Construct (N : Node_Id) return Node_Id;
|
||||
pragma Inline (Previous_Suitable_Construct);
|
||||
-- Return the previous node suitable for inclusion into the early
|
||||
-- call region.
|
||||
|
||||
procedure Transition_Body_Declarations
|
||||
(Bod : Node_Id;
|
||||
Curr : out Node_Id);
|
||||
|
@ -7209,7 +7214,7 @@ package body Sem_Elab is
|
|||
begin
|
||||
-- The early call region starts at N
|
||||
|
||||
Curr := Prev (N);
|
||||
Curr := Previous_Suitable_Construct (N);
|
||||
Start := N;
|
||||
|
||||
-- Inspect each node in reverse declarative order while going in
|
||||
|
@ -7286,7 +7291,7 @@ package body Sem_Elab is
|
|||
-- Otherwise the input node is still within some list
|
||||
|
||||
else
|
||||
Curr := Prev (Start);
|
||||
Curr := Previous_Suitable_Construct (Start);
|
||||
end if;
|
||||
end Include;
|
||||
|
||||
|
@ -7378,6 +7383,23 @@ package body Sem_Elab is
|
|||
end case;
|
||||
end Is_Suitable_Construct;
|
||||
|
||||
---------------------------------
|
||||
-- Previous_Suitable_Construct --
|
||||
---------------------------------
|
||||
|
||||
function Previous_Suitable_Construct (N : Node_Id) return Node_Id is
|
||||
P : Node_Id;
|
||||
|
||||
begin
|
||||
P := Prev (N);
|
||||
|
||||
while Present (P) and then not Is_Suitable_Construct (P) loop
|
||||
Prev (P);
|
||||
end loop;
|
||||
|
||||
return P;
|
||||
end Previous_Suitable_Construct;
|
||||
|
||||
----------------------------------
|
||||
-- Transition_Body_Declarations --
|
||||
----------------------------------
|
||||
|
|
Loading…
Reference in New Issue