Open hiraditya opened 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"
@llvm/issue-subscribers-backend-arm
Author: AdityaK (hiraditya)
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.
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);
}
cc: @ilinpv
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?
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:
|
| ********************
crash log: