================ @@ -1349,7 +1349,7 @@ void TextDiagnostic::emitSnippetAndCaret( // Prepare source highlighting information for the lines we're about to // emit, starting from the first line. std::unique_ptr<SmallVector<StyleRange>[]> SourceStyles = - highlightLines(BufStart, Lines.first, Lines.second, PP, LangOpts, + highlightLines(BufData, Lines.first, Lines.second, PP, LangOpts, ---------------- alexfh wrote:
I'll try to provide what I have so far, but I doubt it's feasible to create a good test case for this. So here's what I have so far (requires GLib 2.78.3 in third_party/glib/): ``` $ cat q.c #include <stdlib.h> #include <math.h> #include <string.h> #include "q.h" $ cat q.h #ifndef __Q_H__ #define __Q_H__ #include <stdio.h> #include "third_party/glib/glib/glib.h" G_INLINE_FUNC void q(); #endif $ cat stl/math.h #ifndef _STL_MATH_H_ #define _STL_MATH_H_ #include_next <math.h> #endif $ cat stl/string.h #ifndef _STL_STRING_H_ #define _STL_STRING_H_ #include_next <string.h> #endif $ clang -iquote . -isystem stl -fdiagnostics-show-option -fcolor-diagnostics -Wall -Werror --target=aarch64-unknown-linux-gnu -mcpu=neoverse-n1 --sysroot=our/custom/libc -D_Q1 -D_Q2 -D_Q3 -D_Q4 -D_Q5 -D_Q6 -D_Q7 -D_Q8 -D_Q9 -D_Q10 -D_Q11 -D_Q12 -D_Q13 -D_Q14 -D_Q15 -D_Q16 -D_Q17 -D_Q18 -D_Q19 -c q.c -fsyntax-only In file included from q.c:4: ./q.h:7:1: warning: Deprecated pre-processor symbol: replace with "static inline" [-W#pragma-messages] 7 | G_INLINE_FUNC void q(); | ^ ./third_party/glib/glib/gmacros.h:157:39: note: expanded from macro 'G_INLINE_FUNC' 157 | # define G_INLINE_FUNC static inline GLIB_DEPRECATED_MACRO_IN_2_48_FOR(static inline) | ^ ./third_party/glib/glib/glib-visibility.h:414:46: note: expanded from macro 'GLIB_DEPRECATED_MACRO_IN_2_48_FOR' 414 | #define GLIB_DEPRECATED_MACRO_IN_2_48_FOR(f) GLIB_DEPRECATED_MACRO_FOR (f) | ^ ./third_party/glib/glib/gmacros.h:1299:3: note: expanded from macro 'GLIB_DEPRECATED_MACRO_FOR' 1299 | _GLIB_GNUC_DO_PRAGMA(GCC warning G_STRINGIFY (Deprecated pre-processor symbol: replace with #f)) | ^ ./third_party/glib/glib/gmacros.h:1296:33: note: expanded from macro '_GLIB_GNUC_DO_PRAGMA' 1296 | #define _GLIB_GNUC_DO_PRAGMA(x) _Pragma(G_STRINGIFY (x)) | ^ <scratch space>:40:6: note: expanded from here assert.h assertion failed at llvm-project/clang/lib/Frontend/TextDiagnostic.cpp:1157 in std::unique_ptr<llvm::SmallVector<TextDiagnostic::StyleRange>[]> highlightLines(StringR ef, unsigned int, unsigned int, const Preprocessor *, const LangOptions &, bool, FileID, const SourceManager &): CheckPoint >= Buff->getBufferStart() && CheckPoint <= Buff->getBufferEnd() *** Check failure stack trace: *** @ 0x562b1f8b03a3 __assert_fail @ 0x562b170c558e clang::TextDiagnostic::emitSnippetAndCaret() @ 0x562b170c7b02 clang::TextDiagnostic::emitCodeContext() @ 0x562b1709bcbc clang::DiagnosticRenderer::emitDiagnostic() @ 0x562b1709ef73 clang::DiagnosticRenderer::emitSingleMacroExpansion() @ 0x562b1709cf56 clang::DiagnosticRenderer::emitMacroExpansions() @ 0x562b1709bd47 clang::DiagnosticRenderer::emitDiagnostic() @ 0x562b170bc4bb clang::TextDiagnosticPrinter::HandleDiagnostic() @ 0x562b1996038a clang::DiagnosticIDs::EmitDiag() @ 0x562b19960183 clang::DiagnosticIDs::ProcessDiag() @ 0x562b199564ac clang::DiagnosticsEngine::EmitCurrentDiagnostic() @ 0x562b198aa621 (anonymous namespace)::PragmaMessageHandler::HandlePragma() @ 0x562b198a12d6 clang::PragmaNamespace::HandlePragma() @ 0x562b198a12d6 clang::PragmaNamespace::HandlePragma() @ 0x562b198a1587 clang::Preprocessor::HandlePragmaDirective() @ 0x562b198a21ad clang::Preprocessor::Handle_Pragma() @ 0x562b1988aec3 clang::Preprocessor::ExpandBuiltinMacro() @ 0x562b19889599 clang::Preprocessor::HandleMacroExpandedIdentifier() @ 0x562b198c32f8 clang::Preprocessor::HandleIdentifier() @ 0x562b198d5023 clang::TokenLexer::Lex() @ 0x562b1987c316 clang::Preprocessor::CLK_TokenLexer() @ 0x562b198c3bfd clang::Preprocessor::Lex() @ 0x562b173942fa clang::Parser::ConsumeToken() @ 0x562b17393915 clang::Parser::ConsumeAnyToken() @ 0x562b174784f5 clang::Parser::ParseDeclarationSpecifiers() @ 0x562b1739ed03 clang::Parser::ParseDeclOrFunctionDefInternal() @ 0x562b1739e4af clang::Parser::ParseDeclarationOrFunctionDefinition() @ 0x562b1739c864 clang::Parser::ParseExternalDeclaration() @ 0x562b17399164 clang::Parser::ParseTopLevelDecl() ``` The problem is that I can't cut a reasonable subset of our libc without making the crash disappear. I hope that's enough to understand the problem. https://github.com/llvm/llvm-project/pull/80442 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits