diff mbox series

[Ada] Display Entity in debugging printouts

Message ID 20210617143310.GA8881@adacore.com
State New
Headers show
Series [Ada] Display Entity in debugging printouts | expand

Commit Message

Pierre-Marie de Rodat June 17, 2021, 2:33 p.m. UTC
This patch fixes a bug in which procedures in Treepr such as pp would
fail to display the Entity or Associated_Node fields. This was because
of the shenanigans played with the Entity_Or_Associated_Node field (see
Sinfo.Utils).

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

gcc/ada/

	* treepr.adb (Print_Node): Display the Entity or Associated_Node
	fields if appropriate.
	* sinfo-utils.ads (F_Associated_Node, F_Entity): Remove. These
	are no longer needed.
diff mbox series

Patch

diff --git a/gcc/ada/sinfo-utils.ads b/gcc/ada/sinfo-utils.ads
--- a/gcc/ada/sinfo-utils.ads
+++ b/gcc/ada/sinfo-utils.ads
@@ -139,12 +139,6 @@  package Sinfo.Utils is
      (N : N_Inclusive_Has_Entity; Val : Node_Id)
       renames Set_Entity_Or_Associated_Node;
 
-   function F_Associated_Node return Node_Field renames
-     F_Entity_Or_Associated_Node;
-   function F_Entity return Node_Field renames
-     F_Entity_Or_Associated_Node;
-   --  Note that we are renaming the enumeration literals here
-
    ---------------
    -- Debugging --
    ---------------


diff --git a/gcc/ada/treepr.adb b/gcc/ada/treepr.adb
--- a/gcc/ada/treepr.adb
+++ b/gcc/ada/treepr.adb
@@ -1272,14 +1272,22 @@  package body Treepr is
             Print_Eol;
          end if;
 
-         --  Print Entity field if operator (other cases of Entity
-         --  are in the table, so are handled in the normal circuit)
+         --  Deal with Entity_Or_Associated_Node. If N has both, then just
+         --  print Entity; they are the same thing.
 
-         if Nkind (N) in N_Op and then Present (Entity (N)) then
+         if N in N_Inclusive_Has_Entity and then Present (Entity (N)) then
             Print_Str (Prefix);
             Print_Str ("Entity = ");
             Print_Node_Ref (Entity (N));
             Print_Eol;
+
+         elsif N in N_Has_Associated_Node
+           and then Present (Associated_Node (N))
+         then
+            Print_Str (Prefix);
+            Print_Str ("Associated_Node = ");
+            Print_Node_Ref (Associated_Node (N));
+            Print_Eol;
          end if;
 
          --  Print special fields if we have a subexpression
@@ -1391,7 +1399,7 @@  package body Treepr is
             | F_Sloc
             | F_Left_Opnd
             | F_Right_Opnd
-            | F_Entity
+            | F_Entity_Or_Associated_Node -- one of them was printed
             | F_Assignment_OK
             | F_Do_Range_Check
             | F_Has_Dynamic_Length_Check