OpenCilk / opencilk-project

Monorepo for the OpenCilk compiler. Forked from llvm/llvm-project and based on Tapir/LLVM.
Other
89 stars 29 forks source link

UNREACHABLE executed at /home/neboat/opencilk2/opencilk/clang/lib/AST/StmtPrinter.cpp:2583! #217

Closed bababuck closed 9 months ago

bababuck commented 9 months ago

Describe the bug

Compile fails with the following message:

clang -std=gnu11 -Wall -fopencilk -O3 -DNDEBUG -march=znver2  -o event_list_reducer.o -c event_list_reducer.c
Cannot print TypoExpr nodes
UNREACHABLE executed at /home/neboat/opencilk2/opencilk/clang/lib/AST/StmtPrinter.cpp:2583!
PLEASE submit a bug report to https://github.com/OpenCilk/opencilk-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.

Most recent change in project source code was to implement a reducer. Let me know if you need any more info.

OpenCilk version

clang version 14.0.6 (https://github.com/OpenCilk/opencilk-project fc90ded2b090672f84c58d12d8d85cd999eb6c1a)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /software/OpenCilk/20.04/2.0.0//bin

Steps to reproduce (include relevant output)

  1. git clone (waiting for professor's permission to share)
    git checkout compiler-bug
    make
  2. clang version 14.0.6 (https://github.com/OpenCilk/opencilk-project fc90ded2b090672f84c58d12d8d85cd999eb6c1a)
    Target: x86_64-unknown-linux-gnu
    Thread model: posix
    InstalledDir: /software/OpenCilk/20.04/2.0.0//bin
  3. 
    clang -std=gnu11 -Wall -fopencilk -O3 -DNDEBUG -march=znver2  -o event_list_reducer.o -c event_list_reducer.c
    Cannot print TypoExpr nodes
    UNREACHABLE executed at /home/neboat/opencilk2/opencilk/clang/lib/AST/StmtPrinter.cpp:2583!
    PLEASE submit a bug report to https://github.com/OpenCilk/opencilk-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
    Stack dump:
  4. Program arguments: clang -std=gnu11 -Wall -fopencilk -O3 -DNDEBUG -march=znver2 -o event_list_reducer.o -c event_list_reducer.c

  5. ./event_list_reducer.h:23:104: current parser token ';'

    0 0x0000000003e230f3 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x3e230f3)

    1 0x0000000003e20e2e llvm::sys::RunSignalHandlers() (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x3e20e2e)

    2 0x0000000003e2248d llvm::sys::CleanupOnSignal(unsigned long) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x3e2248d)

    3 0x0000000003d95813 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) CrashRecoveryContext.cpp:0:0

    4 0x0000000003d959be CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0

    5 0x000015246487d420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)

    6 0x000015246431000b raise /build/glibc-BHL3KM/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1

    7 0x00001524642ef859 abort /build/glibc-BHL3KM/glibc-2.31/stdlib/abort.c:81:7

    8 0x0000000003d9aeb1 (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x3d9aeb1)

    9 0x000000000698c7a9 (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x698c7a9)

    10 0x000000000698b8b1 clang::StmtVisitorBase<std::add_pointer, (anonymous namespace)::StmtPrinter, void>::Visit(clang::Stmt*) StmtPrinter.cpp:0:0

    11 0x000000000697cad9 clang::Stmt::printPretty(llvm::raw_ostream&, clang::PrinterHelper, clang::PrintingPolicy const&, unsigned int, llvm::StringRef, clang::ASTContext const) const (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x697cad9)

    12 0x00000000069f584b (anonymous namespace)::TypePrinter::printBefore(clang::Type const*, clang::Qualifiers, llvm::raw_ostream&) TypePrinter.cpp:0:0

    13 0x00000000069f1f1d clang::QualType::getAsStringInternal(clang::Type const*, clang::Qualifiers, std::__cxx11::basic_string<char, std::char_traits, std::allocator >&, clang::PrintingPolicy const&) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x69f1f1d)

    14 0x00000000069f1d8a clang::QualType::getAsString[abi:cxx11](clang::PrintingPolicy const&) const (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x69f1d8a)

    15 0x00000000065b3d46 ConvertTypeToDiagnosticString[abi:cxx11](clang::ASTContext&, clang::QualType, llvm::ArrayRef<std::pair<clang::DiagnosticsEngine::ArgumentKind, long> >, llvm::ArrayRef) ASTDiagnostic.cpp:0:0

    16 0x00000000065b2a25 clang::FormatASTNodeDiagnosticArgument(clang::DiagnosticsEngine::ArgumentKind, long, llvm::StringRef, llvm::StringRef, llvm::ArrayRef<std::pair<clang::DiagnosticsEngine::ArgumentKind, long> >, llvm::SmallVectorImpl&, void*, llvm::ArrayRef) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x65b2a25)

    17 0x0000000004140ac1 clang::Diagnostic::FormatDiagnostic(char const, char const, llvm::SmallVectorImpl&) const (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x4140ac1)

    18 0x0000000004ac1482 clang::TextDiagnosticPrinter::HandleDiagnostic(clang::DiagnosticsEngine::Level, clang::Diagnostic const&) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x4ac1482)

    19 0x00000000041455c8 clang::DiagnosticIDs::ProcessDiag(clang::DiagnosticsEngine&) const (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x41455c8)

    20 0x000000000413f99a clang::DiagnosticsEngine::EmitCurrentDiagnostic(bool) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x413f99a)

    21 0x0000000005c3464c clang::Sema::EmitCurrentDiagnostic(unsigned int) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x5c3464c)

    22 0x0000000005c3cee1 llvm::optional_detail::OptionalStorage<clang::Sema::ImmediateDiagBuilder, false>::reset() Sema.cpp:0:0

    23 0x0000000005c357c4 clang::Sema::SemaDiagnosticBuilder::~SemaDiagnosticBuilder() (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x5c357c4)

    24 0x0000000005d676a9 clang::Sema::isIncompatibleTypedef(clang::TypeDecl, clang::TypedefNameDecl) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x5d676a9)

    25 0x0000000005d67b41 clang::Sema::MergeTypedefNameDecl(clang::Scope, clang::TypedefNameDecl, clang::LookupResult&) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x5d67b41)

    26 0x0000000005d832fa clang::Sema::ActOnTypedefNameDecl(clang::Scope, clang::DeclContext, clang::TypedefNameDecl*, clang::LookupResult&, bool&) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x5d832fa)

    27 0x0000000005d78f87 clang::Sema::ActOnTypedefDeclarator(clang::Scope, clang::Declarator&, clang::DeclContext, clang::TypeSourceInfo*, clang::LookupResult&) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x5d78f87)

    28 0x0000000005d77f3f clang::Sema::HandleDeclarator(clang::Scope, clang::Declarator&, llvm::MutableArrayRef<clang::TemplateParameterList>) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x5d77f3f)

    29 0x0000000005d77355 clang::Sema::ActOnDeclarator(clang::Scope*, clang::Declarator&) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x5d77355)

    30 0x0000000005b4149c clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x5b4149c)

    31 0x0000000005b3fbeb clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::SourceLocation, clang::Parser::ForRangeInit) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x5b3fbeb)

    32 0x0000000005b39657 clang::Parser::ParseSimpleDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributesWithRange&, bool, clang::Parser::ForRangeInit, clang::SourceLocation) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x5b39657)

    33 0x0000000005b3901c clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributesWithRange&, clang::SourceLocation*) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x5b3901c)

    34 0x0000000005b0887a clang::Parser::ParseExternalDeclaration(clang::ParsedAttributesWithRange&, clang::ParsingDeclSpec*) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x5b0887a)

    35 0x0000000005b0716f clang::Parser::ParseTopLevelDecl(clang::OpaquePtr&, bool) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x5b0716f)

    36 0x0000000005b0188d clang::ParseAST(clang::Sema&, bool, bool) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x5b0188d)

    37 0x0000000004a14270 clang::FrontendAction::Execute() (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x4a14270)

    38 0x0000000004988fd8 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x4988fd8)

    39 0x0000000004acf633 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x4acf633)

    40 0x000000000270119f cc1_main(llvm::ArrayRef<char const>, char const, void*) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x270119f)

    41 0x00000000026fefc0 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0

    42 0x00000000047ff7f2 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional >, std::__cxx11::basic_string<char, std::char_traits, std::allocator >, bool) const::$_1>(long) Job.cpp:0:0

    43 0x0000000003d95731 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x3d95731)

    44 0x00000000047ff200 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional >, std::__cxx11::basic_string<char, std::char_traits, std::allocator >, bool) const (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x47ff200)

    45 0x00000000047c4284 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x47c4284)

    46 0x00000000047c47c7 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x47c47c7)

    47 0x00000000047dfcf8 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x47dfcf8)

    48 0x00000000026fe8e9 main (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x26fe8e9)

    49 0x00001524642f1083 __libc_start_main /build/glibc-BHL3KM/glibc-2.31/csu/../csu/libc-start.c:342:3

    50 0x00000000026fbe6e _start (/share/software/OpenCilk/20.04/2.0.0/bin/clang-14+0x26fbe6e)

neboat commented 9 months ago

Thanks for the bug report. I managed to replicate the assertion failure on my end on that version of OpenCilk.

The assertion failure seems to be gone in OpenCilk 2.0.1 and newer. I'm not certain, but I'm guessing commit b6f2cc43efe fixed the issue.

If you're able to, I would recommend upgrading to OpenCilk 2.0.1 or the current release candidate for OpenCilk 2.1. Let me know if that solution works for you.

bababuck commented 9 months ago

Not able to upgrade but was able to work around by making some changes to my code! Thanks!