On 03/24/2016 09:20 AM, Bernd Schmidt wrote:


On 03/23/2016 03:21 PM, Richard Biener wrote:
On Wed, Mar 23, 2016 at 2:15 PM, Bernd Schmidt <bschm...@redhat.com>
wrote:
On 03/23/2016 01:41 PM, Richard Biener wrote:

Btw, the issue in the PR is also fixed with a simple

Index: libcpp/line-map.c
===================================================================
--- libcpp/line-map.c   (revision 234415)
+++ libcpp/line-map.c   (working copy)
@@ -543,7 +543,7 @@ linemap_add (struct line_maps *set, enum
                   to_file);

         /* A TO_FILE of NULL is special - we use the natural
values.  */
-      if (error || to_file == NULL)
+      if (to_file == NULL)
          {
            to_file = ORDINARY_MAP_FILE_NAME (from);
            to_line = SOURCE_LINE (from, from[1].start_location);


I looked at that, but that made it hard to add the testcase as the line
numbers no longer match the dg-error directives. By moving this code
we can
ignore the erroneous #line directive, and for this one testcase at
least,
that makes the line numbers (and caret diagnostics etc.) come out right.

After some more digging and looking at your patch I'd approve that if
it would
emit a warning rather than an error - so can you please adjust it?

Like this? No one has yet approved any better wording for the message,
so given that you said "it's not a regression" I've left it, but I would
now prefer "linemarker ignored due to incorrect nesting".


Bernd

cpp-leave.diff


        PR lto/69650
        * directives.c (do_linemarker): Test for file left but not entered
        here.
        * line-map.c (linemap_add): Not here.

        PR lto/69650
        * gcc.dg/pr69650.c: New test.
OK.

Also OK if you want to fixup the message.

jeff

Reply via email to