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 --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