ChuanqiXu added a comment.

In D126694#3629251 <https://reviews.llvm.org/D126694#3629251>, @iains wrote:

> In D126694#3629094 <https://reviews.llvm.org/D126694#3629094>, @ChuanqiXu 
> wrote:
>
>> BTW, after I applied the patch, the compiler crashes at 
>> https://github.com/ChuanqiXu9/stdmodules.
>
> That link points to a project - is there (say) a gist of the crash 
> information?

Here is the crash log:

  unhandled type: 0x7cda9e0 LValueReferenceType 0x7cda9e0 'const struct 
std::_PairT &'
  `-QualType 0x7cd85f1 'const struct std::_PairT' const
    `-RecordType 0x7cd85f0 'struct std::_PairT'
      `-CXXRecord 0x7cd8540 '_PairT'
  unhandled type: 0x7cdabb0 RValueReferenceType 0x7cdabb0 'struct std::_PairT 
&&'
  `-RecordType 0x7cd85f0 'struct std::_PairT'
    `-CXXRecord 0x7cd8540 '_PairT'
  unhandled type: 0x80e0400 LValueReferenceType 0x80e0400 'struct std::_PairT &'
  `-RecordType 0x7cd85f0 'struct std::_PairT'
    `-CXXRecord 0x7cd8540 '_PairT'
  unhandled type: 0x7c0e1a0 TemplateTypeParmType 0x7c0e1a0 '_T1' dependent 
depth 0 index 0
  `-TemplateTypeParm 0x7c0e148 '_T1'
  unhandled type: 0x7c0e220 TemplateTypeParmType 0x7c0e220 '_T2' dependent 
depth 0 index 1
  `-TemplateTypeParm 0x7c0e1d0 '_T2'
  unhandled type: 0x7c0e6a0 LValueReferenceType 0x7c0e6a0 'const pair<_T1, _T2> 
&' dependent
  `-QualType 0x7ace031 'const pair<_T1, _T2>' const
    `-InjectedClassNameType 0x7ace030 'pair<_T1, _T2>' dependent
      `-CXXRecord 0x7c0e290 'pair'
  unhandled type: 0x7c0e8e0 RValueReferenceType 0x7c0e8e0 'pair<_T1, _T2> &&' 
dependent
  `-InjectedClassNameType 0x7ace030 'pair<_T1, _T2>' dependent
    `-CXXRecord 0x7c0e290 'pair'
  clang++: 
/home/chuanqi.xcq/workspace.xuchuanqi/llvm-project-for-work/clang/lib/Sema/SemaModule.cpp:1084:
 void clang::Sema::markGMFDeclsReachableFrom(clang::Decl*, bool): Assertion 
`T->isRecordType() && "base not a record?"' failed.
  PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ 
and include the crash backtrace, preprocessed source, and associated run script.
  Stack dump:
  0.    Program arguments: clang++ -std=c++20 --precompile 
-fprebuilt-module-path=. coroutine.cppm -o std-coroutine.pcm -isystem 
../build_libcxx/include/c++/v1 
-I../build_libcxx/include/x86_64-unknown-linux-gnu/c++/v1 -nostdinc++
  1.    <eof> parser at end of file
  2.    ../build_libcxx/include/c++/v1/__functional/hash.h:308:12: 
instantiating function definition 'std::__scalar_hash<std::_PairT, 
2>::operator()'
  3.    ../build_libcxx/include/c++/v1/__functional/hash.h:93:18: instantiating 
function definition 'std::__murmur2_or_cityhash<unsigned long, 64>::operator()'
   #0 0x0000000001f60f90 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
   #1 0x0000000001f5ede4 llvm::sys::CleanupOnSignal(unsigned long) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x1f5ede4)
   #2 0x0000000001eaa468 CrashRecoverySignalHandler(int) 
CrashRecoveryContext.cpp:0:0
   #3 0x00007ffff7fb29d0 __restore_rt sigaction.c:0:0
   #4 0x00007ffff7675f35 raise (/lib64/libc.so.6+0x3bf35)
   #5 0x00007ffff765f8d7 abort (/lib64/libc.so.6+0x258d7)
   #6 0x00007ffff765f7a7 _nl_load_domain.cold loadmsgcat.c:0:0
   #7 0x00007ffff766e536 (/lib64/libc.so.6+0x34536)
   #8 0x0000000004696390 clang::Sema::markGMFDeclsReachableFrom(clang::Decl*, 
bool) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x4696390)
   #9 0x0000000004695d87 clang::Sema::markGMFDeclsReachableFrom(clang::Decl*, 
bool) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x4695d87)
  #10 0x0000000004696559 clang::Sema::findGMFReachableDeclsForType(clang::Type 
const*) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x4696559)
  #11 0x000000000469689b clang::Sema::findGMFReachableDeclExprs(clang::Stmt*) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x469689b)
  #12 0x00000000046967bd clang::Sema::findGMFReachableDeclExprs(clang::Stmt*) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x46967bd)
  #13 0x00000000046967bd clang::Sema::findGMFReachableDeclExprs(clang::Stmt*) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x46967bd)
  #14 0x00000000046967bd clang::Sema::findGMFReachableDeclExprs(clang::Stmt*) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x46967bd)
  #15 0x00000000046967bd clang::Sema::findGMFReachableDeclExprs(clang::Stmt*) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x46967bd)
  #16 0x00000000046958c2 clang::Sema::markGMFDeclsReachableFrom(clang::Decl*, 
bool) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x46958c2)
  #17 0x0000000004695749 clang::Sema::markGMFDeclsReachableFrom(clang::Decl*, 
bool) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x4695749)
  #18 0x0000000004695e75 clang::Sema::markGMFDeclsReachableFrom(clang::Decl*, 
bool) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x4695e75)
  #19 0x0000000004695e75 clang::Sema::markGMFDeclsReachableFrom(clang::Decl*, 
bool) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x4695e75)
  #20 0x0000000004695d87 clang::Sema::markGMFDeclsReachableFrom(clang::Decl*, 
bool) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x4695d87)
  #21 0x0000000004695b71 clang::Sema::markGMFDeclsReachableFrom(clang::Decl*, 
bool) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x4695b71)
  #22 0x000000000469653b clang::Sema::findGMFReachableDeclsForType(clang::Type 
const*) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x469653b)
  #23 0x0000000004696114 clang::Sema::markGMFDeclsReachableFrom(clang::Decl*, 
bool) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x4696114)
  #24 0x0000000004a15993 
clang::Sema::BuildVariableInstantiation(clang::VarDecl*, clang::VarDecl*, 
clang::MultiLevelTemplateArgumentList const&, 
llvm::SmallVector<clang::Sema::LateInstantiatedAttribute, 16u>*, 
clang::DeclContext*, clang::LocalInstantiationScope*, bool, 
clang::VarTemplateSpecializationDecl*) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x4a15993)
  #25 0x0000000004a1f3be 
clang::TemplateDeclInstantiator::VisitVarDecl(clang::VarDecl*, bool, 
llvm::ArrayRef<clang::BindingDecl*>*) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x4a1f3be)
  #26 0x0000000004a241f4 void llvm::function_ref<void 
()>::callback_fn<clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, 
clang::MultiLevelTemplateArgumentList const&)::'lambda'()>(long) 
SemaTemplateInstantiateDecl.cpp:0:0
  #27 0x000000000411d7a1 
clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, 
llvm::function_ref<void ()>) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x411d7a1)
  #28 0x00000000049d7042 clang::Sema::SubstDecl(clang::Decl*, 
clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x49d7042)
  #29 0x000000000498fb15 clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformDeclStmt(clang::DeclStmt*) 
SemaTemplateInstantiate.cpp:0:0
  #30 0x00000000049c9479 clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*, 
bool) SemaTemplateInstantiate.cpp:0:0
  #31 0x00000000049cdfa5 clang::Sema::SubstStmt(clang::Stmt*, 
clang::MultiLevelTemplateArgumentList const&) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x49cdfa5)
  #32 0x0000000004a197af 
clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, 
clang::FunctionDecl*, bool, bool, bool) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x4a197af)
  #33 0x0000000004a17c0f clang::Sema::PerformPendingInstantiations(bool) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x4a17c0f)
  #34 0x0000000004a19a3c 
clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, 
clang::FunctionDecl*, bool, bool, bool) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x4a19a3c)
  #35 0x0000000004a17c0f clang::Sema::PerformPendingInstantiations(bool) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x4a17c0f)
  #36 0x000000000413b45a 
clang::Sema::ActOnEndOfTranslationUnitFragment(clang::Sema::TUFragmentKind) 
(.part.0) Sema.cpp:0:0
  #37 0x000000000413bba6 clang::Sema::ActOnEndOfTranslationUnit() 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x413bba6)
  #38 0x0000000003ff6448 
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, 
clang::Sema::ModuleImportState&) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x3ff6448)
  #39 0x0000000003feae7a clang::ParseAST(clang::Sema&, bool, bool) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x3feae7a)
  #40 0x0000000002a66409 clang::FrontendAction::Execute() 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x2a66409)
  #41 0x00000000029f2ec6 
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x29f2ec6)
  #42 0x0000000002b40433 
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x2b40433)
  #43 0x0000000000a0edca cc1_main(llvm::ArrayRef<char const*>, char const*, 
void*) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0xa0edca)
  #44 0x0000000000a08298 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) 
driver.cpp:0:0
  #45 0x000000000286cd75 void llvm::function_ref<void 
()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>,
 std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
  #46 0x0000000001eaa5d4 
llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x1eaa5d4)
  #47 0x000000000286d46f 
clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>,
 std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
  #48 0x0000000002838d52 
clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, 
clang::driver::Command const*&, bool) const 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x2838d52)
  #49 0x000000000283983d 
clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, 
llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) 
const 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x283983d)
  #50 0x00000000028430dc 
clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, 
llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0x28430dc)
  #51 0x0000000000a0d343 clang_main(int, char**) 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0xa0d343)
  #52 0x00007ffff7661193 __libc_start_main (/lib64/libc.so.6+0x27193)
  #53 0x0000000000a07ebe _start 
(/disk2/workspace.xuchuanqi/llvm-project-for-work/build/bin/clang-14+0xa07ebe)
  clang-14: error: clang frontend command failed with exit code 134 (use -v to 
see invocation)
  clang version 15.0.0 (g...@github.com:llvm/llvm-project.git 
487d8ba3f33b127a7996ab9d3ba9c056e5e5b8c2)
  Target: x86_64-unknown-linux-gnu
  Thread model: posix
  InstalledDir: 
/home/chuanqi.xcq/workspace.xuchuanqi/llvm-project-for-work/build/bin
  clang-14: note: diagnostic msg: 
  ********************
  
  PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
  Preprocessed source(s) and associated run script(s) are located at:
  clang-14: note: diagnostic msg: /tmp/coroutine-73dc76.cppm
  clang-14: note: diagnostic msg: /tmp/coroutine-73dc76.sh
  clang-14: note: diagnostic msg: 
  
  ********************



>> I would try to add more tests about C++20 Modules.
>
> of course, more tests can be useful, but it would be better to try to be 
> specific - it does not crash for any of the tests in the clang test suite.

Yeah, small test is helpful for debugging and developing. But large examples 
are an important part for testing. Although there are many tests in clang test 
suite, we often find breaking changes in new patches. So it would be better to 
have both.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D126694/new/

https://reviews.llvm.org/D126694

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to