authorbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 16 Apr 1998 11:49:07 +0000 (11:49 +0000)
committerbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 16 Apr 1998 11:49:07 +0000 (11:49 +0000)
        * tree.c (build_expr_wfl): Use NULL_TREE if the file name is NULL.
        Propagate TREE_SIDE_EFFECTS and TREE_TYPE iff the encapsulated
        node is non NULL. Cache last file name and file name identifier node.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@19234 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/tree.c

index c0b1e34..20805d5 100644 (file)
@@ -3232,12 +3232,23 @@ build_expr_wfl (node, file, line, col)
      char *file;
      int line, col;
 {
+  static char *last_file = 0;
+  static tree  last_filenode = NULL_TREE;
   register tree wfl = make_node (EXPR_WITH_FILE_LOCATION);
+
   EXPR_WFL_NODE (wfl) = node;
-  EXPR_WFL_FILENAME_NODE (wfl) = get_identifier (file);
   EXPR_WFL_SET_LINECOL (wfl, line, col);
-  TREE_SIDE_EFFECTS (wfl) = TREE_SIDE_EFFECTS (node);
-  TREE_TYPE (wfl) = TREE_TYPE (node);
+  if (file != last_file)
+    {
+      last_file = file;
+      last_filenode = file ? get_identifier (file) : NULL_TREE;
+    }
+  EXPR_WFL_FILENAME_NODE (wfl) = last_filenode;
+  if (node)
+    {
+      TREE_SIDE_EFFECTS (wfl) = TREE_SIDE_EFFECTS (node);
+      TREE_TYPE (wfl) = TREE_TYPE (node);
+    }
   return wfl;
 }
 \f