Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: clang-17: error: clang frontend command failed with exit code 70 (use -v to see invocation) #1973

Closed
twaik opened this issue Nov 22, 2023 · 9 comments
Labels

Comments

@twaik
Copy link

twaik commented Nov 22, 2023

Description

Log [bug.tar.gz](https://github.com/android/ndk/files/13441999/bug.tar.gz)
FAILED: Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-25.cpp.o 
/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang++ --target=armv7-none-linux-androideabi --gcc-toolchain=/home/twaik/.termux-build/_cache/android-r26b-api-24-v0 --sysroot=/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/sysroot -DBUILDING_GTK__=1 -DBUILDING_JavaScriptCore -DBUILDING_WEBKIT=1 -DBUILDING_WITH_CMAKE=1 -DGETTEXT_PACKAGE=\"WebKitGTK-4.1\" -DHAVE_CONFIG_H=1 -DJSC_GLIB_API_ENABLED -DJavaScriptCore_EXPORTS -DPAS_BMALLOC=1 -DSTATICALLY_LINKED_WITH_WTF -I/home/twaik/.termux-build/webkit2gtk-4.1/build/JavaScriptCore/Headers -I/home/twaik/.termux-build/webkit2gtk-4.1/build -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/API -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/assembler -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/b3 -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/b3/air -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/bindings -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/builtins -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/bytecode -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/bytecompiler -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/dfg -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/disassembler -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/disassembler/ARM64 -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/disassembler/zydis/Zydis -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/domjit -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/ftl -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/heap -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/debugger -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/inspector -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/inspector/agents -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/inspector/augmentable -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/inspector/remote -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/interpreter -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/jit -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/llint -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/parser -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/profiler -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/runtime -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/tools -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/wasm -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/wasm/js -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/yarr -I/home/twaik/.termux-build/webkit2gtk-4.1/build/JavaScriptCore/DerivedSources -I/home/twaik/.termux-build/webkit2gtk-4.1/build/JavaScriptCore/DerivedSources/inspector -I/home/twaik/.termux-build/webkit2gtk-4.1/build/JavaScriptCore/DerivedSources/runtime -I/home/twaik/.termux-build/webkit2gtk-4.1/build/JavaScriptCore/DerivedSources/yarr -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/API/glib -I/home/twaik/.termux-build/webkit2gtk-4.1/build/JavaScriptCoreGLib/DerivedSources -I/home/twaik/.termux-build/webkit2gtk-4.1/build/JavaScriptCoreGLib/DerivedSources/jsc -I/home/twaik/.termux-build/webkit2gtk-4.1/build/JavaScriptCoreGLib/Headers -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/inspector/remote/glib -I/home/twaik/.termux-build/webkit2gtk-4.1/build/WTF/Headers -isystem /data/data/com.termux/files/usr/include/glib-2.0 -isystem /data/data/com.termux/files/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 -mfpu=neon -mfloat-abi=softfp -mthumb -fstack-protector-strong -Oz --target=armv7a-linux-androideabi24  -I/data/data/com.termux/files/usr/include -DHAVE_MISSING_STD_FILESYSTEM_PATH_CONSTRUCTOR -DCMS_NO_REGISTER_KEYWORD -I/data/data/com.termux/files/usr/lib/gstreamer-1.0/include -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-f2e18ffc-25.cpp.o -MF Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-25.cpp.o.d -o Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-25.cpp.o -c /home/twaik/.termux-build/webkit2gtk-4.1/build/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-25.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/android-ndk/ndk/issues and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.	Program arguments: /home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang++ --target=armv7-none-linux-androideabi --gcc-toolchain=/home/twaik/.termux-build/_cache/android-r26b-api-24-v0 --sysroot=/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/sysroot -DBUILDING_GTK__=1 -DBUILDING_JavaScriptCore -DBUILDING_WEBKIT=1 -DBUILDING_WITH_CMAKE=1 -DGETTEXT_PACKAGE=\"WebKitGTK-4.1\" -DHAVE_CONFIG_H=1 -DJSC_GLIB_API_ENABLED -DJavaScriptCore_EXPORTS -DPAS_BMALLOC=1 -DSTATICALLY_LINKED_WITH_WTF -I/home/twaik/.termux-build/webkit2gtk-4.1/build/JavaScriptCore/Headers -I/home/twaik/.termux-build/webkit2gtk-4.1/build -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/API -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/assembler -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/b3 -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/b3/air -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/bindings -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/builtins -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/bytecode -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/bytecompiler -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/dfg -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/disassembler -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/disassembler/ARM64 -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/disassembler/zydis/Zydis -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/domjit -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/ftl -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/heap -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/debugger -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/inspector -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/inspector/agents -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/inspector/augmentable -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/inspector/remote -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/interpreter -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/jit -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/llint -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/parser -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/profiler -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/runtime -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/tools -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/wasm -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/wasm/js -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/yarr -I/home/twaik/.termux-build/webkit2gtk-4.1/build/JavaScriptCore/DerivedSources -I/home/twaik/.termux-build/webkit2gtk-4.1/build/JavaScriptCore/DerivedSources/inspector -I/home/twaik/.termux-build/webkit2gtk-4.1/build/JavaScriptCore/DerivedSources/runtime -I/home/twaik/.termux-build/webkit2gtk-4.1/build/JavaScriptCore/DerivedSources/yarr -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/API/glib -I/home/twaik/.termux-build/webkit2gtk-4.1/build/JavaScriptCoreGLib/DerivedSources -I/home/twaik/.termux-build/webkit2gtk-4.1/build/JavaScriptCoreGLib/DerivedSources/jsc -I/home/twaik/.termux-build/webkit2gtk-4.1/build/JavaScriptCoreGLib/Headers -I/home/twaik/.termux-build/webkit2gtk-4.1/src/Source/JavaScriptCore/inspector/remote/glib -I/home/twaik/.termux-build/webkit2gtk-4.1/build/WTF/Headers -isystem /data/data/com.termux/files/usr/include/glib-2.0 -isystem /data/data/com.termux/files/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 -mfpu=neon -mfloat-abi=softfp -mthumb -fstack-protector-strong -Oz --target=armv7a-linux-androideabi24 -I/data/data/com.termux/files/usr/include -DHAVE_MISSING_STD_FILESYSTEM_PATH_CONSTRUCTOR -DCMS_NO_REGISTER_KEYWORD -I/data/data/com.termux/files/usr/lib/gstreamer-1.0/include -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-f2e18ffc-25.cpp.o -MF Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-25.cpp.o.d -o Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-25.cpp.o -c /home/twaik/.termux-build/webkit2gtk-4.1/build/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-25.cpp
1.	<eof> parser at end of file
2.	Code generation
3.	Running pass 'Function Pass Manager' on module '/home/twaik/.termux-build/webkit2gtk-4.1/build/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-25.cpp'.
4.	Running pass 'ARM Instruction Selection' on function '@_ZN3JSC12JSRopeString15resolveToBufferIhEEvPNS_8JSStringES3_S3_PT_jPh'
 #0 0x000055df4b437445 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x4a37445)
 #1 0x000055df4b4364b0 llvm::sys::RunSignalHandlers() (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x4a364b0)
 #2 0x000055df4b401bae (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x4a01bae)
 #3 0x000055df4b401b6b (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x4a01b6b)
 #4 0x000055df4b435ac7 llvm::sys::Process::Exit(int, bool) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x4a35ac7)
 #5 0x000055df4ad50019 (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x4350019)
 #6 0x000055df49e38cf9 llvm::report_fatal_error(llvm::Twine const&, bool) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x3438cf9)
 #7 0x000055df498ea9d5 (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x2eea9d5)
 #8 0x000055df4e39667e (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x799667e)
 #9 0x000055df4d76ab8d llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x6d6ab8d)
#10 0x000055df4d76a002 llvm::SelectionDAGBuilder::lowerInvokable(llvm::TargetLowering::CallLoweringInfo&, llvm::BasicBlock const*) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x6d6a002)
#11 0x000055df4d76962c llvm::SelectionDAGBuilder::LowerCallTo(llvm::CallBase const&, llvm::SDValue, bool, bool, llvm::BasicBlock const*) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x6d6962c)
#12 0x000055df4cfa252e llvm::SelectionDAGBuilder::visitCall(llvm::CallInst const&) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x65a252e)
#13 0x000055df4cfa29ea llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x65a29ea)
#14 0x000055df4cfa2791 llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, true>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, true>, bool&) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x65a2791)
#15 0x000055df4d7a39fd llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x6da39fd)
#16 0x000055df4d7b2b5b llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x6db2b5b)
#17 0x000055df4d7b2329 (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x6db2329)
#18 0x000055df4d190853 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x6790853)
#19 0x000055df4d16f2d3 llvm::FPPassManager::runOnFunction(llvm::Function&) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x676f2d3)
#20 0x000055df4d16ee2f llvm::FPPassManager::runOnModule(llvm::Module&) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x676ee2f)
#21 0x000055df4dac2e09 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x70c2e09)
#22 0x000055df4da701f5 (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x70701f5)
#23 0x000055df4da6dabf clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream>>) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x706dabf)
#24 0x000055df4d0f9005 (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x66f9005)
#25 0x000055df4d089d07 clang::ParseAST(clang::Sema&, bool, bool) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x6689d07)
#26 0x000055df4da2ca70 clang::FrontendAction::Execute() (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x702ca70)
#27 0x000055df4da2c8f3 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x702c8f3)
#28 0x000055df4da25792 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x7025792)
#29 0x000055df4da24bf6 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x7024bf6)
#30 0x000055df4da8c174 (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x708c174)
#31 0x000055df4d7e3ce6 (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x6de3ce6)
#32 0x000055df4da0e61c llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x700e61c)
#33 0x000055df4da0e504 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x700e504)
#34 0x000055df4d78a747 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x6d8a747)
#35 0x000055df4d78a8ff clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*>>&) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x6d8a8ff)
#36 0x000055df4d788ead clang_main(int, char**) (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x6d88ead)
#37 0x00007ff0b0c280d0 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#38 0x00007ff0b0c28189 call_init ./csu/../csu/libc-start.c:128:20
#39 0x00007ff0b0c28189 __libc_start_main ./csu/../csu/libc-start.c:347:5
#40 0x000055df4d8522a9 _start (/home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin/clang+++0x6e522a9)
clang-17: error: clang frontend command failed with exit code 70 (use -v to see invocation)
Android (10552028, +pgo, +bolt, +lto, -mlgo, based on r487747d) clang version 17.0.2 (https://android.googlesource.com/toolchain/llvm-project d9f89f4d16663d5012e5c09495f3b30ece3d2362)
Target: armv7a-unknown-linux-android24
Thread model: posix
InstalledDir: /home/twaik/.termux-build/_cache/android-r26b-api-24-v0/bin
clang-17: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-17: note: diagnostic msg: /tmp/UnifiedSource-f2e18ffc-25-587cdf.cpp
clang-17: note: diagnostic msg: /tmp/UnifiedSource-f2e18ffc-25-587cdf.sh
clang-17: note: diagnostic msg: 

********************

The source can be built without problems in the case I remove all [[clang::musttail]] invocations.
bug.tar.gz

Upstream bug

No response

Commit to cherry-pick

No response

Affected versions

r26

Canary version

No response

Host OS

Linux

Host OS version

Ubuntu 23.10

Affected ABIs

armeabi-v7a

@twaik twaik added the bug label Nov 22, 2023
@appujee
Copy link
Collaborator

appujee commented Nov 22, 2023

can repro with open source clang-trunk https://godbolt.org/z/cG1KbW38j

@pirama-arumuga-nainar
Copy link
Collaborator

pirama-arumuga-nainar commented Nov 22, 2023

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

See llvm/llvm-project#57069 (comment) and the following comment. The TLDR is that the ARMv7 backend doesn't tail-call-optimize if arguments are passed in stack. I mentioned this issue in that bug, but my suggested fix for now is to remove musttail attributes for these calls.

@twaik
Copy link
Author

twaik commented Nov 22, 2023

It is already done. Maybe it will be better to disable clang::musttail attribute for armeabi-v7a target? Or it fails only in this specific case?

@pirama-arumuga-nainar
Copy link
Collaborator

Or it fails only in this specific case?

It fails in specific cases. In this case, it's because the callee has too many arguments to fit in registers. Not sure if there are other failure modes but it is expected to work in general.

@appujee
Copy link
Collaborator

appujee commented Nov 23, 2023

small repro

__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);
}

@github-project-automation github-project-automation bot moved this to Triaged in NDK r26c Nov 28, 2023
@DanAlbert DanAlbert removed this from NDK r26c Nov 28, 2023
@DanAlbert
Copy link
Member

godbolt shows that this was true of clang 13 and 14 as well, so not a regression. From the conversation it sounds like this might be an unfriendly error message rather than a bug? Is that right?

@stephenhines
Copy link
Collaborator

godbolt shows that this was true of clang 13 and 14 as well, so not a regression. From the conversation it sounds like this might be an unfriendly error message rather than a bug? Is that right?

It's a crash instead of generating a backend diagnostic, which would be friendlier. Even better would be querying the possible maximum number of arguments for a musttail function in the frontend, and generating a more helpful diagnostic pointing to the exact source issue, which is what @appujee is trying to advocate for here.

@DanAlbert
Copy link
Member

Agreed 👍

@DanAlbert DanAlbert moved this to Needs prebuilt update in NDK r27 Jan 16, 2024
@DanAlbert DanAlbert moved this from Needs prebuilt update to Triaged in NDK r27 Mar 12, 2024
@DanAlbert DanAlbert removed this from NDK r27 Mar 12, 2024
@pirama-arumuga-nainar
Copy link
Collaborator

pirama-arumuga-nainar commented Mar 12, 2024

There are two steps:

(1) A helpful error message is better than a crash. This is not being pursued by anyone currently (and the priority is low).
(2) There is a potential to fix the arm32 backend to be able to tail-call a wider variety of functions (see here). But arm32 gaps are also lower priority and unlikely to get fixed.

We can close this as (2) is unlikely to get fixed and (1) doesn't need to be tracked in the NDK.

@DanAlbert DanAlbert closed this as not planned Won't fix, can't repro, duplicate, stale Mar 12, 2024
@github-project-automation github-project-automation bot moved this to Needs upstream bug in LLVM Aug 29, 2024
foxsen pushed a commit to android-la64/platform-ndk that referenced this issue Oct 10, 2024
Bug: android/ndk#1728
Bug: android/ndk#1853
Bug: android/ndk#1928
Bug: android/ndk#1947
Bug: android/ndk#1953
Bug: android/ndk#1963
Bug: android/ndk#1973
Bug: android/ndk#1988
Test: ./checkbuild.py && ./run_tests.py
Change-Id: Ib319c4f80c107e57ede6b6130d81d6d1cd87e22d
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Needs upstream bug
Development

No branches or pull requests

5 participants