llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
26.8k stars 10.98k forks source link

error in backend: failed to perform tail call elimination on a call site marked musttail #73167

Open hiraditya opened 7 months ago

hiraditya commented 7 months ago

crash log:

fatal error: error in backend: failed to perform tail call elimination on a call site marked musttail
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: /opt/compiler-explorer/clang-trunk/bin/clang++ -gdwarf-4 -g -o /app/output.s -S -target arm-linux-gnueabi --gcc-toolchain=/opt/compiler-explorer/arm/gcc-12.2.0/arm-unknown-linux-gnueabi --sysroot=/opt/compiler-explorer/arm/gcc-12.2.0/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot -fcolor-diagnostics -fno-crash-diagnostics -std=c++20 -fstack-protector-strong -Oz --target=armv7a-linux-androideabi24 -fno-strict-aliasing -fno-exceptions -fno-rtti -mthumb -O3 -D NDEBUG -std=c++20 -fPIC -fvisibility=hidden -ffp-contract=off -fno-slp-vectorize <source>
1.  <eof> parser at end of file
2.  Code generation
3.  Running pass 'Function Pass Manager' on module '<source>'.
4.  Running pass 'ARM Instruction Selection' on function '@_ZN3JSC12JSRopeString15resolveToBufferIhEEvPNS_8JSStringES3_S3_PT_jPh'
 #0 0x00000000034bd4a8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x34bd4a8)
 #1 0x00000000034bb5f4 llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x34bb5f4)
 #2 0x0000000003409cf3 llvm::CrashRecoveryContext::HandleExit(int) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3409cf3)
 #3 0x00000000034b2ffe llvm::sys::Process::Exit(int, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x34b2ffe)
 #4 0x0000000000c09946 (/opt/compiler-explorer/clang-trunk/bin/clang+++0xc09946)
 #5 0x0000000003412d23 llvm::report_fatal_error(llvm::Twine const&, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3412d23)
 #6 0x0000000003412e88 (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3412e88)
 #7 0x000000000153b8de llvm::ARMTargetLowering::LowerCall(llvm::TargetLowering::CallLoweringInfo&, llvm::SmallVectorImpl<llvm::SDValue>&) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x153b8de)
 #8 0x00000000044c6eda llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x44c6eda)
 #9 0x00000000044c8cb4 llvm::SelectionDAGBuilder::lowerInvokable(llvm::TargetLowering::CallLoweringInfo&, llvm::BasicBlock const*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x44c8cb4)
#10 0x00000000044e0dfa llvm::SelectionDAGBuilder::LowerCallTo(llvm::CallBase const&, llvm::SDValue, bool, bool, llvm::BasicBlock const*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x44e0dfa)
#11 0x00000000044f6569 llvm::SelectionDAGBuilder::visitCall(llvm::CallInst const&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x44f6569)
#12 0x000000000450c58b llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x450c58b)
#13 0x0000000004584bd6 llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void, true>, false, true>, llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void, true>, false, true>, bool&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x4584bd6)
#14 0x0000000004585fc9 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x4585fc9)
#15 0x00000000045887a9 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.0) SelectionDAGISel.cpp:0:0
#16 0x00000000014d0944 (anonymous namespace)::ARMDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) ARMISelDAGToDAG.cpp:0:0
#17 0x0000000002976f30 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#18 0x0000000002e94f52 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2e94f52)
#19 0x0000000002e950d1 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2e950d1)
#20 0x0000000002e96d50 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2e96d50)
#21 0x0000000003729b79 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3729b79)
#22 0x0000000003cf74f8 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3cf74f8)
#23 0x0000000005af9399 clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5af9399)
#24 0x0000000003cf6705 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3cf6705)
#25 0x0000000003f75df1 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3f75df1)
#26 0x0000000003ef3e1b clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3ef3e1b)
#27 0x00000000040550e3 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x40550e3)
#28 0x0000000000c0b6b6 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0xc0b6b6)
#29 0x0000000000c0410d ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#30 0x0000000003d3dd19 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#31 0x0000000003409bf3 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3409bf3)
#32 0x0000000003d3df39 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#33 0x0000000003d05f37 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3d05f37)
#34 0x0000000003d068ed clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3d068ed)
#35 0x0000000003d1065c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3d1065c)
#36 0x0000000000c08ab1 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0xc08ab1)
#37 0x0000000000b031f1 main (/opt/compiler-explorer/clang-trunk/bin/clang+++0xb031f1)
#38 0x00007f656dd9c083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#39 0x0000000000c0390e _start (/opt/compiler-explorer/clang-trunk/bin/clang+++0xc0390e)
clang++: error: clang frontend command failed with exit code 70 (use -v to see invocation)
Compiler returned: 70
hiraditya commented 7 months ago

UnifiedSource-f2e18ffc-25-587cdf.cpp.txt

$ clang -c UnifiedSource-f2e18ffc-25-587cdf.cpp  -std=c++20   "-fstack-protector-strong" "-Oz" "--target=armv7a-linux-androideabi24" "-fno-strict-aliasing" "-fno-exceptions" "-fno-rtti" "-mthumb" "-O3" "-D" "NDEBUG" "-std=c++20" "-fPIC" "-fvisibility=hidden" "-ffp-contract=off" "-fno-slp-vectorize"
llvmbot commented 7 months ago

@llvm/issue-subscribers-backend-arm

Author: AdityaK (hiraditya)

crash log: ``` fatal error: error in backend: failed to perform tail call elimination on a call site marked musttail 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: /opt/compiler-explorer/clang-trunk/bin/clang++ -gdwarf-4 -g -o /app/output.s -S -target arm-linux-gnueabi --gcc-toolchain=/opt/compiler-explorer/arm/gcc-12.2.0/arm-unknown-linux-gnueabi --sysroot=/opt/compiler-explorer/arm/gcc-12.2.0/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot -fcolor-diagnostics -fno-crash-diagnostics -std=c++20 -fstack-protector-strong -Oz --target=armv7a-linux-androideabi24 -fno-strict-aliasing -fno-exceptions -fno-rtti -mthumb -O3 -D NDEBUG -std=c++20 -fPIC -fvisibility=hidden -ffp-contract=off -fno-slp-vectorize <source> 1. <eof> parser at end of file 2. Code generation 3. Running pass 'Function Pass Manager' on module '<source>'. 4. Running pass 'ARM Instruction Selection' on function '@_ZN3JSC12JSRopeString15resolveToBufferIhEEvPNS_8JSStringES3_S3_PT_jPh' #0 0x00000000034bd4a8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x34bd4a8) #1 0x00000000034bb5f4 llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x34bb5f4) #2 0x0000000003409cf3 llvm::CrashRecoveryContext::HandleExit(int) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3409cf3) #3 0x00000000034b2ffe llvm::sys::Process::Exit(int, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x34b2ffe) #4 0x0000000000c09946 (/opt/compiler-explorer/clang-trunk/bin/clang+++0xc09946) #5 0x0000000003412d23 llvm::report_fatal_error(llvm::Twine const&, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3412d23) #6 0x0000000003412e88 (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3412e88) #7 0x000000000153b8de llvm::ARMTargetLowering::LowerCall(llvm::TargetLowering::CallLoweringInfo&, llvm::SmallVectorImpl<llvm::SDValue>&) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x153b8de) #8 0x00000000044c6eda llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x44c6eda) #9 0x00000000044c8cb4 llvm::SelectionDAGBuilder::lowerInvokable(llvm::TargetLowering::CallLoweringInfo&, llvm::BasicBlock const*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x44c8cb4) #10 0x00000000044e0dfa llvm::SelectionDAGBuilder::LowerCallTo(llvm::CallBase const&, llvm::SDValue, bool, bool, llvm::BasicBlock const*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x44e0dfa) #11 0x00000000044f6569 llvm::SelectionDAGBuilder::visitCall(llvm::CallInst const&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x44f6569) #12 0x000000000450c58b llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x450c58b) #13 0x0000000004584bd6 llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void, true>, false, true>, llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void, true>, false, true>, bool&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x4584bd6) #14 0x0000000004585fc9 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x4585fc9) #15 0x00000000045887a9 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.0) SelectionDAGISel.cpp:0:0 #16 0x00000000014d0944 (anonymous namespace)::ARMDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) ARMISelDAGToDAG.cpp:0:0 #17 0x0000000002976f30 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0 #18 0x0000000002e94f52 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2e94f52) #19 0x0000000002e950d1 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2e950d1) #20 0x0000000002e96d50 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2e96d50) #21 0x0000000003729b79 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3729b79) #22 0x0000000003cf74f8 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3cf74f8) #23 0x0000000005af9399 clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5af9399) #24 0x0000000003cf6705 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3cf6705) #25 0x0000000003f75df1 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3f75df1) #26 0x0000000003ef3e1b clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3ef3e1b) #27 0x00000000040550e3 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x40550e3) #28 0x0000000000c0b6b6 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0xc0b6b6) #29 0x0000000000c0410d ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0 #30 0x0000000003d3dd19 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0 #31 0x0000000003409bf3 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3409bf3) #32 0x0000000003d3df39 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0 #33 0x0000000003d05f37 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3d05f37) #34 0x0000000003d068ed clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3d068ed) #35 0x0000000003d1065c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3d1065c) #36 0x0000000000c08ab1 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0xc08ab1) #37 0x0000000000b031f1 main (/opt/compiler-explorer/clang-trunk/bin/clang+++0xb031f1) #38 0x00007f656dd9c083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083) #39 0x0000000000c0390e _start (/opt/compiler-explorer/clang-trunk/bin/clang+++0xc0390e) clang++: error: clang frontend command failed with exit code 70 (use -v to see invocation) Compiler returned: 70 ```
davemgreen commented 7 months ago

See #67767 and #57069 and https://github.com/WebKit/WebKit/pull/15830

In short, tail calls on Arm can only have maximum 4 arguments. There could be a better error message for it in clang, but the source might need to be fixed to make it work.

hiraditya commented 7 months ago

repro

$ clang -std=c++20 "-fstack-protector-strong" "-Oz" "--target=armv7a-linux-androideabi24" "-fno-strict-aliasing" "-fno-exceptions" "-fno-rtti" "-mthumb" "-O3" "-D" "NDEBUG" "-std=c++20" "-fPIC" "-fvisibility=hidden" "-ffp-contract=off" "-fno-slp-vectorize"

__attribute__((noinline))
int bar(int i, int j, int k, int l, int m, int x) {
    return i+j+k+l+m;
}

int foo(int i, int j, int k, int l, int m, int x) {
    [[clang::musttail]] return bar(i, j, k, l, m, x);
}
hiraditya commented 7 months ago

cc: @ilinpv

hiraditya commented 7 months ago

In short, tail calls on Arm can only have maximum 4 arguments.

in the above case, it took me 6 arguments to trigger a crash. maybe the clang frontend can issue an error for such cases?

bill-auger commented 6 months ago

i also hit this error while compiling webkit2gtk - my build log did not print a back-trace - also, i can not provide the requested "preprocessed source, and associated run script" as the error message suggests; because AFAICT, those files are not written to /tmp and are not present in the source or build directories - if you would like more data, please advise me how to collect the interesting data

 |  FAILED: Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-bfc896e1-12.cpp.o
 |  /usr/bin/clang++ -DBUILDING_GTK__=1 -DBUILDING_JavaScriptCore -DBUILDING_WEBKIT=1 -DBUILDING_WITH_CMAKE=1 -DBWRAP_EXECUTABLE=\"/usr/bin/bwrap\" -DDBUS_PROXY_EXECUTABLE=\"/usr/bin/xdg-dbus-proxy\" -DGETTEXT_PACKAGE=\"WebKitGTK-4.0\" -DHAVE_CONFIG_H=1 -DJSC_GLIB_API_ENABLED -DJavaScriptCore_EXPORTS -DPAS_BMALLOC=1 -DSTATICALLY_LINKED_WITH_WTF -DSTATICALLY_LINKED_WITH_bmalloc -I/build/webkit2gtk/src/build/JavaScriptCore/Headers -I/build/webkit2gtk/src/build -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/API -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/assembler -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/b3 -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/b3/air -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/bindings -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/builtins -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/bytecode -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/bytecompiler -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/dfg -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/disassembler -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/disassembler/ARM64 -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/disassembler/zydis/Zydis -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/domjit -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/ftl -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/heap -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/debugger -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/inspector -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/inspector/agents -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/inspector/augmentable -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/inspector/remote -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/interpreter -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/jit -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/llint -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/parser -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/profiler -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/runtime -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/tools -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/wasm -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/wasm/js -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/yarr -I/build/webkit2gtk/src/build/JavaScriptCore/DerivedSources -I/build/webkit2gtk/src/build/JavaScriptCore/DerivedSources/inspector -I/build/webkit2gtk/src/build/JavaScriptCore/DerivedSources/runtime -I/build/webkit2gtk/src/build/JavaScriptCore/DerivedSources/yarr -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/API/glib -I/build/webkit2gtk/src/build/JavaScriptCoreGLib/DerivedSources -I/build/webkit2gtk/src/build/JavaScriptCoreGLib/DerivedSources/jsc -I/build/webkit2gtk/src/build/JavaScriptCoreGLib/Headers -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/inspector/remote/glib -I/build/webkit2gtk/src/build/WTF/Headers -I/build/webkit2gtk/src/build/bmalloc/Headers -isystem /usr/include/glib-2.0 -isystem /usr/lib/glib-2.0/include -fdiagnostics-color=always -fcolor-diagnostics -Wextra -Wall -pipe -Wno-noexcept-type -Wno-psabi -Wno-misleading-indentation -Wno-parentheses-equality -Qunused-arguments -Wundef -Wpointer-arith -Wmissing-format-attribute -Wformat-security -Wcast-align -Wno-tautological-compare -march=armv7-a -mfloat-abi=hard -mfpu=neon                               -O2 -pipe -fstack-protector-strong -fno-plt -fexceptions                 -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security                 -fstack-clash-protection -Wp,-D_GLIBCXX_ASSERTIONS -g  -ffile-prefix-map=/build/webkit2gtk/src=/usr/src/debug/webkit2gtk -g1 -fno-strict-aliasing -fno-exceptions -fno-rtti  -mthumb -O3 -DNDEBUG -std=c++20 -fPIC -fvisibility=hidden -ffp-contract=off -fno-slp-vectorize -MD -MT Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-bfc896e1-12.cpp.o -MF Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-bfc896e1-12.cpp.o.d -o Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-bfc896e1-12.cpp.o -c /build/webkit2gtk/src/build/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-bfc896e1-12.cpp
 |  fatal error: error in backend: failed to perform tail call elimination on a call site marked musttail
 |  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: /usr/bin/clang++ -DBUILDING_GTK__=1 -DBUILDING_JavaScriptCore -DBUILDING_WEBKIT=1 -DBUILDING_WITH_CMAKE=1 -DBWRAP_EXECUTABLE=\"/usr/bin/bwrap\" -DDBUS_PROXY_EXECUTABLE=\"/usr/bin/xdg-dbus-proxy\" -DGETTEXT_PACKAGE=\"WebKitGTK-4.0\" -DHAVE_CONFIG_H=1 -DJSC_GLIB_API_ENABLED -DJavaScriptCore_EXPORTS -DPAS_BMALLOC=1 -DSTATICALLY_LINKED_WITH_WTF -DSTATICALLY_LINKED_WITH_bmalloc -I/build/webkit2gtk/src/build/JavaScriptCore/Headers -I/build/webkit2gtk/src/build -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/API -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/assembler -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/b3 -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/b3/air -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/bindings -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/builtins -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/bytecode -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/bytecompiler -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/dfg -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/disassembler -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/disassembler/ARM64 -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/disassembler/zydis/Zydis -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/domjit -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/ftl -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/heap -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/debugger -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/inspector -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/inspector/agents -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/inspector/augmentable -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/inspector/remote -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/interpreter -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/jit -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/llint -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/parser -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/profiler -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/runtime -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/tools -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/wasm -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/wasm/js -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/yarr -I/build/webkit2gtk/src/build/JavaScriptCore/DerivedSources -I/build/webkit2gtk/src/build/JavaScriptCore/DerivedSources/inspector -I/build/webkit2gtk/src/build/JavaScriptCore/DerivedSources/runtime -I/build/webkit2gtk/src/build/JavaScriptCore/DerivedSources/yarr -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/API/glib -I/build/webkit2gtk/src/build/JavaScriptCoreGLib/DerivedSources -I/build/webkit2gtk/src/build/JavaScriptCoreGLib/DerivedSources/jsc -I/build/webkit2gtk/src/build/JavaScriptCoreGLib/Headers -I/build/webkit2gtk/src/webkitgtk-2.42.4/Source/JavaScriptCore/inspector/remote/glib -I/build/webkit2gtk/src/build/WTF/Headers -I/build/webkit2gtk/src/build/bmalloc/Headers -isystem /usr/include/glib-2.0 -isystem /usr/lib/glib-2.0/include -fdiagnostics-color=always -fcolor-diagnostics -Wextra -Wall -pipe -Wno-noexcept-type -Wno-psabi -Wno-misleading-indentation -Wno-parentheses-equality -Qunused-arguments -Wundef -Wpointer-arith -Wmissing-format-attribute -Wformat-security -Wcast-align -Wno-tautological-compare -march=armv7-a -mfloat-abi=hard -mfpu=neon -O2 -pipe -fstack-protector-strong -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -Wp,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/build/webkit2gtk/src=/usr/src/debug/webkit2gtk -g1 -fno-strict-aliasing -fno-exceptions -fno-rtti -mthumb -O3 -DNDEBUG -std=c++20 -fPIC -fvisibility=hidden -ffp-contract=off -fno-slp-vectorize -MD -MT Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-bfc896e1-12.cpp.o -MF Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-bfc896e1-12.cpp.o.d -o Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-bfc896e1-12.cpp.o -c /build/webkit2gtk/src/build/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-bfc896e1-12.cpp
 |  1.  <eof> parser at end of file
 |  2.  Code generation
 |  3.  Running pass 'Function Pass Manager' on module '/build/webkit2gtk/src/build/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-bfc896e1-12.cpp'.
 |  4.  Running pass 'ARM Instruction Selection' on function '@_ZN3JSC12JSRopeString15resolveToBufferIhEEvPNS_8JSStringES3_S3_PT_jPh'
 |  clang-16: error: clang frontend command failed with exit code 70 (use -v to see invocation)
 |  clang version 16.0.6
 |  Target: armv7l-unknown-linux-gnueabihf
 |  Thread model: posix
 |  InstalledDir: /usr/bin
 |  clang-16: note: diagnostic msg:
 |  ********************
 |
 |  PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
 |  Preprocessed source(s) and associated run script(s) are located at:
 |  clang-16: note: diagnostic msg: /tmp/UnifiedSource-bfc896e1-12-8209ec.cpp
 |  clang-16: note: diagnostic msg: /tmp/UnifiedSource-bfc896e1-12-8209ec.sh
 |  clang-16: note: diagnostic msg:
 |
 |  ********************