[Bug c/87975] New: Bad diagnostic context arrow emission when line contains a trigraph (-trigraphs)

spam at rob1nn dot pw gcc-bugzilla@gcc.gnu.org
Sun Nov 11 22:37:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87975

            Bug ID: 87975
           Summary: Bad diagnostic context arrow emission when line
                    contains a trigraph (-trigraphs)
           Product: gcc
           Version: 8.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: spam at rob1nn dot pw
  Target Milestone: ---

Created attachment 44986
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44986&action=edit
test case source file showcasing the fault (build with -trigraphs)

When trigraphs are part of any diagnostic output message (e.g. warning, note)
and in front of the highlighted context, the highlighting and arrow of the
diagnostic message context are wrongfully shifted to the left by (trigraph
count) * 2 columns

For example, building the attached test case with `gcc -trigraphs trigraph.c`
results in:

test.c: In function ‘main’:
test.c:4:21: warning: implicit declaration of function ‘printf’
[-Wimplicit-function-declaration]
   if(false ??!??! true) printf("warn");
                     ^~~~~~
test.c:4:21: warning: incompatible implicit declaration of built-in function
‘printf’
test.c:4:21: note: include ‘<stdio.h>’ or provide a declaration of ‘printf’
test.c:2:1:
+#include <stdio.h>

test.c:4:21:
   if(false ??!??! true) printf("warn");
                     ^~~~~~

                        ^ these context markers and the associated coloring are
shifted 4 to the left, possibly because the two ??! trigraphs are condensed to
|| before the diagnostic message is generated - thereby shortening the line in
front of the marker

This is on gcc version 8.2.1 20180831 (GCC)


More information about the Gcc-bugs mailing list