[llvm-bugs] [Bug 34089] New: Assertion failure while expanding a define to a _Pragma

via llvm-bugs llvm-bugs at lists.llvm.org
Sat Aug 5 16:14:32 PDT 2017


https://bugs.llvm.org/show_bug.cgi?id=34089

            Bug ID: 34089
           Summary: Assertion failure while expanding a define to a
                    _Pragma
           Product: clang
           Version: 5.0
          Hardware: All
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: -New Bugs
          Assignee: unassignedclangbugs at nondot.org
          Reporter: bero at linaro.org
                CC: llvm-bugs at lists.llvm.org

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 at 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)
             ^
<scratch space>: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)
             ^
<scratch space>: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<int>(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<char>,
std::allocator<char> > std::operator+<char, std::char_traits<char>,
std::allocator<char> >(char, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)
(/usr/lib64/libclangFrontend.so.5.0+0x39858d9416)
#9 0x00000039858d81ec
clang::TextDiagnostic::emitSnippetAndCaret(clang::FullSourceLoc,
clang::DiagnosticsEngine::Level,
llvm::SmallVectorImpl<clang::CharSourceRange>&,
llvm::ArrayRef<clang::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::ArrayRef<clang::CharSourceRange>,
llvm::ArrayRef<clang::FixItHint>)
(/usr/lib64/libclangFrontend.so.5.0+0x39858a86cd)
#12 0x00000039858a8349
clang::DiagnosticRenderer::emitDiagnostic(clang::FullSourceLoc,
clang::DiagnosticsEngine::Level, llvm::StringRef,
llvm::ArrayRef<clang::CharSourceRange>, llvm::ArrayRef<clang::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::ArrayRef<clang::CharSourceRange>)
(/usr/lib64/libclangFrontend.so.5.0+0x39858a9960)
#14 0x00000039858a89a4
clang::DiagnosticRenderer::emitMacroExpansions(clang::FullSourceLoc,
clang::DiagnosticsEngine::Level, llvm::ArrayRef<clang::CharSourceRange>,
llvm::ArrayRef<clang::FixItHint>)
(/usr/lib64/libclangFrontend.so.5.0+0x39858a89a4)
#15 0x00000039858a838b
clang::DiagnosticRenderer::emitDiagnostic(clang::FullSourceLoc,
clang::DiagnosticsEngine::Level, llvm::StringRef,
llvm::ArrayRef<clang::CharSourceRange>, llvm::ArrayRef<clang::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 ')'

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20170805/c477acc9/attachment-0001.html>


More information about the llvm-bugs mailing list