bgra8 wrote:

@sdkrystian we've bisected a clang crash to this revision.

The code on which it crashes is (`repro.cc`):
```
template <typename> struct a {
  template <typename b> auto c(b d) -> decltype(operator=(d));
  void operator()();
};
a<void> e;
void f() { e(); }
```

Compilation command:
```
$ clang -std=gnu++20 -c repro.cc -o /tmp/out
repro.cc:6:12: error: cannot compile this l-value expression yet
    6 | void f() { e(); }
      |            ^
Stack dump:
0.      Program arguments: clang -std=gnu++20 -c repro.cc -o /tmp/out
1.      <eof> parser at end of file
2.      repro.cc:6:6: LLVM IR generation of declaration 'f'
3.      repro.cc:6:6: Generating code for declaration 'f'
 #0 0x000055ca8e2a92f8 llvm::sys::RunSignalHandlers() (clang+0x80a92f8)
 #1 0x000055ca8e270d16 CrashRecoverySignalHandler(int) (clang+0x8070d16)
 #2 0x00007fa7bc971e80 __restore_rt (/usr/lib64/libpthread.so.0+0x14e80)
 #3 0x000055ca893cb1c7 
arrangeFreeFunctionLikeCall(clang::CodeGen::CodeGenTypes&, 
clang::CodeGen::CodeGenModule&, clang::CodeGen::CallArgList const&, 
clang::FunctionType const*, unsigned int, bool) (clang+0x31cb1c7)
 #4 0x000055ca89417be8 
clang::CodeGen::CodeGenFunction::EmitCall(clang::QualType, 
clang::CodeGen::CGCallee const&, clang::CallExpr const*, 
clang::CodeGen::ReturnValueSlot, llvm::Value*) (clang+0x3217be8)
 #5 0x000055ca89416bed 
clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*, 
clang::CodeGen::ReturnValueSlot) (clang+0x3216bed)
 #6 0x000055ca8942b1b3 (anonymous 
namespace)::ScalarExprEmitter::VisitCallExpr(clang::CallExpr const*) 
(clang+0x322b1b3)
 #7 0x000055ca8941bd50 
clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) 
(clang+0x321bd50)
 #8 0x000055ca893f83d9 
clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) 
(clang+0x31f83d9)
 #9 0x000055ca894a13a1 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt 
const*, llvm::ArrayRef<clang::Attr const*>) (clang+0x32a13a1)
#10 0x000055ca894af0d1 
clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt
 const&, bool, clang::CodeGen::AggValueSlot) (clang+0x32af0d1)
#11 0x000055ca8970c66b 
clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, 
llvm::Function*, clang::CodeGen::CGFunctionInfo const&) (clang+0x350c66b)
#12 0x000055ca8972e3b7 
clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, 
llvm::GlobalValue*) (clang+0x352e3b7)
#13 0x000055ca897275d5 
clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, 
llvm::GlobalValue*) (clang+0x35275d5)
#14 0x000055ca8972b3ba 
clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) (clang+0x352b3ba)
#15 0x000055ca89726590 
clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) (clang+0x3526590)
#16 0x000055ca89833edc (anonymous 
namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef) 
(clang+0x3633edc)
#17 0x000055ca893bf6ec 
clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) 
(clang+0x31bf6ec)
#18 0x000055ca8a1f4a19 clang::ParseAST(clang::Sema&, bool, bool) 
(clang+0x3ff4a19)
#19 0x000055ca89f6bd3a clang::FrontendAction::Execute() (clang+0x3d6bd3a)
#20 0x000055ca89ee56e4 
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (clang+0x3ce56e4)
#21 0x000055ca8909b6cf 
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (clang+0x2e9b6cf)
#22 0x000055ca89090bec cc1_main(llvm::ArrayRef<char const*>, char const*, 
void*) (clang+0x2e90bec)
#23 0x000055ca8908dc26 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, 
llvm::ToolContext const&) (clang+0x2e8dc26)
#24 0x000055ca8a06b99e void llvm::function_ref<void 
()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__u::optional<llvm::StringRef>>,
 std::__u::basic_string<char, std::__u::char_traits<char>, 
std::__u::allocator<char>>*, bool*) const::$_0>(long) (clang+0x3e6b99e)
#25 0x000055ca8e270aef 
llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) 
(clang+0x8070aef)
#26 0x000055ca8a06b17a 
clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__u::optional<llvm::StringRef>>,
 std::__u::basic_string<char, std::__u::char_traits<char>, 
std::__u::allocator<char>>*, bool*) const (clang+0x3e6b17a)
#27 0x000055ca8a02d77d 
clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, 
clang::driver::Command const*&, bool) const (clang+0x3e2d77d)
#28 0x000055ca8a02da2f 
clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, 
llvm::SmallVectorImpl<std::__u::pair<int, clang::driver::Command const*>>&, 
bool) const (clang+0x3e2da2f)
#29 0x000055ca8a04aed0 
clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, 
llvm::SmallVectorImpl<std::__u::pair<int, clang::driver::Command const*>>&) 
(clang+0x3e4aed0)
#30 0x000055ca8908d224 clang_main(int, char**, llvm::ToolContext const&) 
(clang+0x2e8d224)
#31 0x000055ca8908b6f4 main (clang+0x2e8b6f4)
#32 0x00007fa7bc8023d4 __libc_start_main (/usr/lib64/libc.so.6+0x613d4)
#33 0x000055ca8908b62a _start (clang+0x2e8b62a)
clang: error: clang frontend command failed with exit code 139 (use -v to see 
invocation)
```





https://github.com/llvm/llvm-project/pull/90152
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to