trans.c (gnat_to_gnu): Do not set source location info on NOP_EXPRs.
authorEric Botcazou <ebotcazou@adacore.com>
Sat, 24 May 2008 09:49:55 +0000 (09:49 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Sat, 24 May 2008 09:49:55 +0000 (09:49 +0000)
        * trans.c (gnat_to_gnu): Do not set source location info on NOP_EXPRs.
        (Sloc_to_locus): Do not overwrite known GCC locations when translating
        GNAT standard locations.

From-SVN: r135847

gcc/ada/ChangeLog
gcc/ada/trans.c

index 35f9a08d868089d3219771762732ba9c83ca6be6..f7305e8ef4f7c2ec6923130b4c01ceec7a3d968f 100644 (file)
@@ -1,3 +1,9 @@
+2008-05-24  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * trans.c (gnat_to_gnu): Do not set source location info on NOP_EXPRs.
+       (Sloc_to_locus): Do not overwrite known GCC locations when translating
+       GNAT standard locations.
+
 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gigi.h (mark_visited): Declare.
index 4bc772ddfeca1665df7b4337cea918111aa5d8ee..5f579e71b45a1a61524b21e9ccba1d43d29303c3 100644 (file)
@@ -4880,7 +4880,10 @@ gnat_to_gnu (Node_Id gnat_node)
      the location information of their last use.  Note that we may have
      no result if we tried to build a CALL_EXPR node to a procedure with
      no side-effects and optimization is enabled.  */
-  if (gnu_result && EXPR_P (gnu_result) && !REFERENCE_CLASS_P (gnu_result))
+  if (gnu_result
+      && EXPR_P (gnu_result)
+      && TREE_CODE (gnu_result) != NOP_EXPR
+      && !REFERENCE_CLASS_P (gnu_result))
     set_expr_location_from_node (gnu_result, gnat_node);
 
   /* If we're supposed to return something of void_type, it means we have
@@ -6853,7 +6856,8 @@ Sloc_to_locus (Source_Ptr Sloc, location_t *locus)
 
   if (Sloc <= Standard_Location)
     {
-      *locus = BUILTINS_LOCATION;
+      if (*locus == UNKNOWN_LOCATION)
+       *locus = BUILTINS_LOCATION;
       return false;
     }
   else