tree.c (build_expr_wfl): Use NULL_TREE if the file name is NULL.
authorAlexandre Petit-Bianco <apbianco@sendai.cygnus.com>
Thu, 16 Apr 1998 11:49:07 +0000 (04:49 -0700)
committerPer Bothner <bothner@gcc.gnu.org>
Thu, 16 Apr 1998 11:49:07 +0000 (04:49 -0700)

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

From-SVN: r19234

gcc/tree.c

index c0b1e34c2c664c9ae4d13fb5470eecea54fa8080..20805d5cef39bb6ed7e695b28f070656667f8cbb 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