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

            Bug ID: 87091
           Summary: Malformed fix-it hint for missing header
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Keywords: diagnostic
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
                CC: dmalcolm at gcc dot gnu.org
  Target Milestone: ---

Created attachment 44590
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44590&action=edit
Preprocessed source

With today's trunk the following fails (due to a libstdc++ bug I'm fixing):

#define _GLIBCXX_DEBUG 1
#include <debug/vector>
int main() { }

g++ -std=gnu++17 x.cc

In file included from /home/jwakely/gcc/9/include/c++/9.0.0/debug/vector:34,
                 from x.cc:2:
/home/jwakely/gcc/9/include/c++/9.0.0/vector:87:27: error: ‘vector’ in
namespace ‘std’ does not name a template type
87 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
   |                           ^~~~~~
/home/jwakely/gcc/9/include/c++/9.0.0/vector:87:22: note: ‘std::vector’ is
defined in header ‘<vector>’; did you forget to ‘#include <vector>’?
/home/jwakely/gcc/9/include/c++/9.0.0/vector:74:1:
   |+#include <vector>
/home/jwakely/gcc/9/include/c++/9.0.0/vector:74:1:74 | #endif
/home/jwakely/gcc/9/include/c++/9.0.0/vector:87:22:
/home/jwakely/gcc/9/include/c++/9.0.0/vector:87:22:87 |       using vector =
std::vector<_Tp, polymorphic_allocator<_Tp>>;
   |                      ^~~


The fix-it is mangled. I don't know what the #endif is doing there, and the
caret location points to the characters "e/c" of the filename, because the
quoted source is prefixed by the filename but the caret line isn't. It seems
like the repeated filename is not being suppressed, but the caret expects it to
be.

Reply via email to