Skip to content

Assertion failure while expanding a define to a _Pragma #33436

@llvmbot

Description

@llvmbot
Bugzilla Link 34089
Resolution DUPLICATE
Resolved on Aug 06, 2017 10:06
Version 5.0
OS Linux
Blocks #33196
Reporter LLVM Bugzilla Contributor
CC @zygoloid

Extended Description

Trying to build this test case (reduced from a libdrm build failure):

#define a(b) _Pragma(#b)
a() a(GCC)

With clang -Wall results in:

[bero@compilebox4 tmp]$ clang -Wall xf86drm-83e6f7.c
xf86drm-83e6f7.c:2:1: warning: unknown pragma ignored [-Wunknown-pragmas]
a() a(GCC)
^
xf86drm-83e6f7.c:1:14: note: expanded from macro 'a'
#define a(b) _Pragma(#b)
^
:3:2: note: expanded from here

^
xf86drm-83e6f7.c:2:5: warning: unknown pragma ignored [-Wunknown-pragmas]
a() a(GCC)
^
xf86drm-83e6f7.c:1:14: note: expanded from macro 'a'
#define a(b) _Pragma(#b)
^
:4:5: note: expanded from here
clang-5.0: ../tools/clang/lib/Frontend/TextDiagnostic.cpp:281: int (anonymous namespace)::SourceColumnMap::byteToContainingColumn(int) const: Assertion `0 <= N && N < static_cast(m_byteToColumn.size())' failed.
#​0 0x0000003979cd7410 llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/usr/lib64/libLLVMSupport.so.5.0+0x3979cd7410)
#​1 0x0000003979cd6032 llvm::sys::RunSignalHandlers() (/usr/lib64/libLLVMSupport.so.5.0+0x3979cd6032)
#​2 0x0000003979cd7674 (/usr/lib64/libLLVMSupport.so.5.0+0x3979cd7674)
#​3 0x00007f47dae672f0 __restore_rt (/lib64/libc.so.6+0x302f0)
#​4 0x00007f47dae672b4 __GI_raise (/lib64/libc.so.6+0x302b4)
#​5 0x00007f47dae68108 __GI_abort (/lib64/libc.so.6+0x31108)
#​6 0x00007f47dae61573 __GI___assert_fail (/lib64/libc.so.6+0x2a573)
#​7 0x00007f47dae615b7 __GI___assert_perror_fail (/lib64/libc.so.6+0x2a5b7)
#​8 0x00000039858d9416 std::__cxx11::basic_string<char, std::char_traits, std::allocator > std::operator+<char, std::char_traits, std::allocator >(char, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) (/usr/lib64/libclangFrontend.so.5.0+0x39858d9416)
#​9 0x00000039858d81ec clang::TextDiagnostic::emitSnippetAndCaret(clang::FullSourceLoc, clang::DiagnosticsEngine::Level, llvm::SmallVectorImplclang::CharSourceRange&, llvm::ArrayRefclang::FixItHint) (/usr/lib64/libclangFrontend.so.5.0+0x39858d81ec)
#​10 0x00000039858d9dba (/usr/lib64/libclangFrontend.so.5.0+0x39858d9dba)
#​11 0x00000039858a86cd clang::DiagnosticRenderer::emitCaret(clang::FullSourceLoc, clang::DiagnosticsEngine::Level, llvm::ArrayRefclang::CharSourceRange, llvm::ArrayRefclang::FixItHint) (/usr/lib64/libclangFrontend.so.5.0+0x39858a86cd)
#​12 0x00000039858a8349 clang::DiagnosticRenderer::emitDiagnostic(clang::FullSourceLoc, clang::DiagnosticsEngine::Level, llvm::StringRef, llvm::ArrayRefclang::CharSourceRange, llvm::ArrayRefclang::FixItHint, llvm::PointerUnion<clang::Diagnostic const*, clang::StoredDiagnostic const*>) (/usr/lib64/libclangFrontend.so.5.0+0x39858a8349)
#​13 0x00000039858a9960 clang::DiagnosticRenderer::emitSingleMacroExpansion(clang::FullSourceLoc, clang::DiagnosticsEngine::Level, llvm::ArrayRefclang::CharSourceRange) (/usr/lib64/libclangFrontend.so.5.0+0x39858a9960)
#​14 0x00000039858a89a4 clang::DiagnosticRenderer::emitMacroExpansions(clang::FullSourceLoc, clang::DiagnosticsEngine::Level, llvm::ArrayRefclang::CharSourceRange, llvm::ArrayRefclang::FixItHint) (/usr/lib64/libclangFrontend.so.5.0+0x39858a89a4)
#​15 0x00000039858a838b clang::DiagnosticRenderer::emitDiagnostic(clang::FullSourceLoc, clang::DiagnosticsEngine::Level, llvm::StringRef, llvm::ArrayRefclang::CharSourceRange, llvm::ArrayRefclang::FixItHint, llvm::PointerUnion<clang::Diagnostic const*, clang::StoredDiagnostic const*>) (/usr/lib64/libclangFrontend.so.5.0+0x39858a838b)
#​16 0x00000039858db3f9 clang::TextDiagnosticPrinter::HandleDiagnostic(clang::DiagnosticsEngine::Level, clang::Diagnostic const&) (/usr/lib64/libclangFrontend.so.5.0+0x39858db3f9)
#​17 0x000000397c525d80 clang::DiagnosticIDs::EmitDiag(clang::DiagnosticsEngine&, clang::DiagnosticIDs::Level) const (/usr/lib64/libclangBasic.so.5.0+0x397c525d80)
#​18 0x000000397c525cb2 clang::DiagnosticIDs::ProcessDiag(clang::DiagnosticsEngine&) const (/usr/lib64/libclangBasic.so.5.0+0x397c525cb2)
#​19 0x000000397c5214a6 clang::DiagnosticsEngine::EmitCurrentDiagnostic(bool) (/usr/lib64/libclangBasic.so.5.0+0x397c5214a6)
#​20 0x0000003980a6f9f8 clang::PragmaNamespace::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&) (/usr/lib64/libclangLex.so.5.0+0x3980a6f9f8)
#​21 0x0000003980a6fa6f clang::Preprocessor::HandlePragmaDirective(clang::SourceLocation, clang::PragmaIntroducerKind) (/usr/lib64/libclangLex.so.5.0+0x3980a6fa6f)
#​22 0x0000003980a6ff98 clang::Preprocessor::Handle_Pragma(clang::Token&) (/usr/lib64/libclangLex.so.5.0+0x3980a6ff98)
#​23 0x0000003980a65746 clang::Preprocessor::ExpandBuiltinMacro(clang::Token&) (/usr/lib64/libclangLex.so.5.0+0x3980a65746)
#​24 0x0000003980a64f9a clang::Preprocessor::HandleMacroExpandedIdentifier(clang::Token&, clang::MacroDefinition const&) (/usr/lib64/libclangLex.so.5.0+0x3980a64f9a)
#​25 0x0000003980a7b10e clang::Preprocessor::HandleIdentifier(clang::Token&) (/usr/lib64/libclangLex.so.5.0+0x3980a7b10e)
#​26 0x0000003980a7b7d0 clang::Preprocessor::Lex(clang::Token&) (/usr/lib64/libclangLex.so.5.0+0x3980a7b7d0)
#​27 0x0000003980a6ffa3 clang::Preprocessor::Handle_Pragma(clang::Token&) (/usr/lib64/libclangLex.so.5.0+0x3980a6ffa3)
#​28 0x0000003980a65746 clang::Preprocessor::ExpandBuiltinMacro(clang::Token&) (/usr/lib64/libclangLex.so.5.0+0x3980a65746)
#​29 0x0000003980a64f9a clang::Preprocessor::HandleMacroExpandedIdentifier(clang::Token&, clang::MacroDefinition const&) (/usr/lib64/libclangLex.so.5.0+0x3980a64f9a)
#​30 0x0000003980a7b10e clang::Preprocessor::HandleIdentifier(clang::Token&) (/usr/lib64/libclangLex.so.5.0+0x3980a7b10e)
#​31 0x0000003980a7b7d0 clang::Preprocessor::Lex(clang::Token&) (/usr/lib64/libclangLex.so.5.0+0x3980a7b7d0)
#​32 0x0000003984e2fa61 (/usr/lib64/libclangParse.so.5.0+0x3984e2fa61)
#​33 0x0000003984e2df80 clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib64/libclangParse.so.5.0+0x3984e2df80)
#​34 0x00000039858ae629 clang::FrontendAction::Execute() (/usr/lib64/libclangFrontend.so.5.0+0x39858ae629)
#​35 0x000000398587bbfc clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib64/libclangFrontend.so.5.0+0x398587bbfc)
#​36 0x000000398840620b clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib64/libclangFrontendTool.so.5.0+0x398840620b)
#​37 0x00000000004110a0 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/bin/clang-5.0+0x4110a0)
#​38 0x000000000040f023 main (/usr/bin/clang-5.0+0x40f023)
#​39 0x00007f47dae58de3 __libc_start_main (/lib64/libc.so.6+0x21de3)
#​40 0x000000000040ceba _start (/usr/bin/clang-5.0+0x40ceba)
Stack dump:
0. Program arguments: /usr/bin/clang-5.0 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -main-file-name xf86drm-83e6f7.c -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -resource-dir /usr/lib64/clang/5.0.0 -internal-isystem /usr/local/include -internal-isystem /usr/lib64/clang/5.0.0/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wall -fdebug-compilation-dir /tmp -ferror-limit 19 -fmessage-length 285 -fobjc-runtime=gcc -fdiagnostics-show-option -fcolor-diagnostics -o /tmp/xf86drm-83e6f7-e3ca15.o -x c xf86drm-83e6f7.c

  1.  xf86drm-83e6f7.c:2:5 <Spelling=xf86drm-83e6f7.c:1:24>: current parser token ')'
    

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzillaclangClang issues not falling into any other categoryduplicateResolved as duplicate

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions