Minor tweak to line debug info
authorEric Botcazou <ebotcazou@adacore.com>
Sat, 12 Sep 2020 10:42:06 +0000 (12:42 +0200)
committerEric Botcazou <ebotcazou@adacore.com>
Sat, 12 Sep 2020 10:42:06 +0000 (12:42 +0200)
This prevents the SLOC of the expression for a tag from being present
in the line debug info every time it is referenced for coverage purposes.

gcc/ada/ChangeLog:
* gcc-interface/trans.c (gnat_to_gnu) <N_Object_Declaration>: Clear
the SLOC of the expression of a tag.

gcc/ada/gcc-interface/trans.c

index e3d71bca40f0b97a4fe486cbaf0508d6b2ae9e7a..aa4393c24b73422608da9c4efd468bdf18f34f92 100644 (file)
@@ -6476,6 +6476,7 @@ gnat_to_gnu (Node_Id gnat_node)
 
          gnu_expr = gnat_to_gnu (Expression (gnat_node));
 
+         /* First deal with erroneous expressions.  */
          if (TREE_CODE (gnu_expr) == ERROR_MARK)
            {
              /* If this is a named number for which we cannot manipulate
@@ -6485,6 +6486,11 @@ gnat_to_gnu (Node_Id gnat_node)
              else if (type_annotate_only)
                gnu_expr = NULL_TREE;
            }
+
+         /* Then a special case: we do not want the SLOC of the expression
+            of the tag to pop up every time it is referenced somewhere.  */
+         else if (EXPR_P (gnu_expr) && Is_Tag (gnat_temp))
+           SET_EXPR_LOCATION (gnu_expr, UNKNOWN_LOCATION);
        }
       else
        gnu_expr = NULL_TREE;