OSDN Git Service

* lex.c (lang_init_options): New function.
[pf3gnuchains/gcc-fork.git] / gcc / print-tree.c
index 8d7db2b..6674a18 100644 (file)
@@ -20,8 +20,8 @@ Boston, MA 02111-1307, USA.  */
 
 
 #include "config.h"
+#include "system.h"
 #include "tree.h"
-#include <stdio.h>
 
 extern char *mode_name[];
 
@@ -80,7 +80,7 @@ print_node_brief (file, prefix, node, indent)
   if (indent > 0)
     fprintf (file, " ");
   fprintf (file, "%s <%s ", prefix, tree_code_name[(int) TREE_CODE (node)]);
-  fprintf (file, HOST_PTR_PRINTF, (HOST_WIDE_INT) node);
+  fprintf (file, HOST_PTR_PRINTF, (char *) node);
 
   if (class == 'd')
     {
@@ -216,7 +216,7 @@ print_node (file, prefix, node, indent)
       return;
     }
 
-  hash = ((unsigned HOST_WIDE_INT) node) % HASH_SIZE;
+  hash = ((unsigned long) node) % HASH_SIZE;
 
   /* If node is in the table, just mention its address.  */
   for (b = table[hash]; b; b = b->next)
@@ -237,7 +237,7 @@ print_node (file, prefix, node, indent)
 
   /* Print the slot this node is in, and its code, and address.  */
   fprintf (file, "%s <%s ", prefix, tree_code_name[(int) TREE_CODE (node)]);
-  fprintf (file, HOST_PTR_PRINTF, (HOST_WIDE_INT) node);
+  fprintf (file, HOST_PTR_PRINTF, (char *) node);
 
   /* Print the name, if any.  */
   if (class == 'd')
@@ -433,7 +433,7 @@ print_node (file, prefix, node, indent)
            {
              fprintf (file, "saved-insns ");
              fprintf (file, HOST_PTR_PRINTF,
-                      (HOST_WIDE_INT) DECL_SAVED_INSNS (node));
+                      (char *) DECL_SAVED_INSNS (node));
            }
        }
 
@@ -547,29 +547,10 @@ print_node (file, prefix, node, indent)
          return;
        }
 
-      first_rtl = len = tree_code_length[(int) TREE_CODE (node)];
-      /* These kinds of nodes contain rtx's, not trees,
+      len = tree_code_length[(int) TREE_CODE (node)];
+      /* Some nodes contain rtx's, not trees,
         after a certain point.  Print the rtx's as rtx's.  */
-      switch (TREE_CODE (node))
-       {
-       case SAVE_EXPR:
-         first_rtl = 2;
-         break;
-       case CALL_EXPR:
-         first_rtl = 2;
-         break;
-       case METHOD_CALL_EXPR:
-         first_rtl = 3;
-         break;
-       case WITH_CLEANUP_EXPR:
-         /* Should be defined to be 2.  */
-         first_rtl = 1;
-         break;
-       case RTL_EXPR:
-         first_rtl = 0;
-       default:
-         break;
-       }
+      first_rtl = first_rtl_op (TREE_CODE (node));
       for (i = 0; i < len; i++)
        {
          if (i >= first_rtl)
@@ -590,6 +571,15 @@ print_node (file, prefix, node, indent)
              print_node (file, temp, TREE_OPERAND (node, i), indent + 4);
            }
        }
+
+      if (TREE_CODE (node) == EXPR_WITH_FILE_LOCATION)
+       {
+         indent_to (file, indent+4);
+          fprintf (file, "%s:%d:%d", 
+                  (EXPR_WFL_FILENAME_NODE (node ) ?
+                   EXPR_WFL_FILENAME (node) : "(no file info)"),
+                  EXPR_WFL_LINENO (node), EXPR_WFL_COLNO (node));
+       }
       break;
 
     case 'c':
@@ -691,6 +681,8 @@ print_node (file, prefix, node, indent)
          break;
 
        default:
+         if (TREE_CODE_CLASS (TREE_CODE (node)) == 'x')
+           lang_print_xnode (file, node, indent);
          break;
        }