diff mbox series

[Ada] Print Storage_Pool and Procedure_To_Call fields

Message ID 20211109094622.GA831001@adacore.com
State New
Headers show
Series [Ada] Print Storage_Pool and Procedure_To_Call fields | expand

Commit Message

Pierre-Marie de Rodat Nov. 9, 2021, 9:46 a.m. UTC
This makes Sprint output the Storage_Pool and Procedure_To_Call fields
of the nodes for which they are defined (allocator, free and returns).

Tested on x86_64-pc-linux-gnu, committed on trunk

gcc/ada/

	* sprint.adb (Sprint_Node_Actual) <N_Allocator>: Also print the
	Procedure_To_Call field if it is present.
	<N_Extended_Return_Statement>: Also print the Storage_Pool and
	Procedure_To_Call fields if they are present.
	<N_Free_Statement>: Likewise.
	<N_Simple_Return_Statement>: Likewise.
diff mbox series

Patch

diff --git a/gcc/ada/sprint.adb b/gcc/ada/sprint.adb
--- a/gcc/ada/sprint.adb
+++ b/gcc/ada/sprint.adb
@@ -1116,6 +1116,12 @@  package body Sprint is
                Write_Char (']');
             end if;
 
+            if Present (Procedure_To_Call (Node)) then
+               Write_Str_With_Col_Check ("[procedure_to_call = ");
+               Sprint_Node (Procedure_To_Call (Node));
+               Write_Char (']');
+            end if;
+
          when N_And_Then =>
             Sprint_Left_Opnd (Node);
             Write_Str_Sloc (" and then ");
@@ -1785,11 +1791,23 @@  package body Sprint is
             if Present (Handled_Statement_Sequence (Node)) then
                Write_Str_With_Col_Check (" do");
                Sprint_Node (Handled_Statement_Sequence (Node));
-               Write_Indent_Str ("end return;");
-            else
-               Write_Indent_Str (";");
+               Write_Indent_Str ("end return");
+            end if;
+
+            if Present (Storage_Pool (Node)) then
+               Write_Str_With_Col_Check ("[storage_pool = ");
+               Sprint_Node (Storage_Pool (Node));
+               Write_Char (']');
             end if;
 
+            if Present (Procedure_To_Call (Node)) then
+               Write_Str_With_Col_Check ("[procedure_to_call = ");
+               Sprint_Node (Procedure_To_Call (Node));
+               Write_Char (']');
+            end if;
+
+            Write_Char (';');
+
          when N_Delta_Aggregate =>
             Write_Str_With_Col_Check_Sloc ("(");
             Sprint_Node (Expression (Node));
@@ -1973,6 +1991,19 @@  package body Sprint is
          when N_Free_Statement =>
             Write_Indent_Str_Sloc ("free ");
             Sprint_Node (Expression (Node));
+
+            if Present (Storage_Pool (Node)) then
+               Write_Str_With_Col_Check ("[storage_pool = ");
+               Sprint_Node (Storage_Pool (Node));
+               Write_Char (']');
+            end if;
+
+            if Present (Procedure_To_Call (Node)) then
+               Write_Str_With_Col_Check ("[procedure_to_call = ");
+               Sprint_Node (Procedure_To_Call (Node));
+               Write_Char (']');
+            end if;
+
             Write_Char (';');
 
          when N_Freeze_Entity =>
@@ -3170,11 +3201,24 @@  package body Sprint is
             if Present (Expression (Node)) then
                Write_Indent_Str_Sloc ("return ");
                Sprint_Node (Expression (Node));
-               Write_Char (';');
             else
-               Write_Indent_Str_Sloc ("return;");
+               Write_Indent_Str_Sloc ("return");
+            end if;
+
+            if Present (Storage_Pool (Node)) then
+               Write_Str_With_Col_Check ("[storage_pool = ");
+               Sprint_Node (Storage_Pool (Node));
+               Write_Char (']');
             end if;
 
+            if Present (Procedure_To_Call (Node)) then
+               Write_Str_With_Col_Check ("[procedure_to_call = ");
+               Sprint_Node (Procedure_To_Call (Node));
+               Write_Char (']');
+            end if;
+
+            Write_Char (';');
+
          when N_Selective_Accept =>
             Write_Indent_Str_Sloc ("select");