Open StephanTLavavej opened 2 years ago
The code works with llvm-mingw 14.0.0: i686-w64-mingw32-clang++.exe -std=c++20 -static test.cpp
.
@llvm/issue-subscribers-backend-x86
The code works with llvm-mingw 14.0.0:
i686-w64-mingw32-clang++.exe -std=c++20 -static test.cpp
.
... which suggests there's some MSABI interaction here.
The crash is NOT reproducible with LLVM 17.0.6:
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.8.5
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x86'
D:\Program Files\Microsoft Visual Studio\2022\Enterprise>F:
F:\>cd Dev\LLVM-17.0.6-win32\bin
F:\Dev\LLVM-17.0.6-win32\bin>cl /EHsc /nologo /W4 /MTd /std:c++20 test.cpp
test.cpp
F:\Dev\LLVM-17.0.6-win32\bin>test.exe
Done!
F:\Dev\LLVM-17.0.6-win32\bin>llvm-readobj.exe test.exe
File: test.exe
Format: COFF-i386
Arch: i386
AddressSize: 32bit
F:\Dev\LLVM-17.0.6-win32\bin>
The crash is NOT reproducible with LLVM 17.0.6:
It seems that you used MSVC's cl
and not clang-cl
It seems that you used MSVC's
cl
and notclang-cl
Sorry, it's my fail, the crash is still here.
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: F:\\Dev\\LLVM-17.0.6-win32\\bin\\clang-cl.exe -cc1 -triple i686-pc-windows-msvc19.38.33134 -emit-obj -mrelax-all -mincremental-linker-compatible -dumpdir a- -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name test.cpp -mrelocation-model static -mframe-pointer=all -relaxed-aliasing -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu pentium4 -mllvm -x86-asm-syntax=intel -tune-cpu generic -D_DEBUG -D_MT -flto-visibility-public-std --dependent-lib=libcmtd --dependent-lib=oldnames -stack-protector 2 -fcxx-exceptions -fexceptions -fexternc-nounwind -fms-volatile -fdiagnostics-format msvc -fcoverage-compilation-dir=F:\\Dev\\LLVM-17.0.6-win32\\bin -resource-dir F:\\Dev\\LLVM-17.0.6-win32\\lib\\clang\\17 -internal-isystem F:\\Dev\\LLVM-17.0.6-win32\\lib\\clang\\17\\include -internal-isystem "D:\\Program Files\\Microsoft Visual Studio\\2022\\VC\\Tools\\MSVC\\14.38.33130\\include" -internal-isystem "D:\\Program Files\\Microsoft Visual Studio\\2022\\VC\\Tools\\MSVC\\14.38.33130\\ATLMFC\\include" -internal-isystem "D:\\Program Files\\Microsoft Visual Studio\\2022\\VC\\Auxiliary\\VS\\include" -internal-isystem "D:\\Windows Kits\\10\\include\\10.0.22000.0\\ucrt" -internal-isystem "D:\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\um" -internal-isystem "D:\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\shared" -internal-isystem "D:\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\winrt" -internal-isystem "D:\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\cppwinrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\include\\um" -internal-isystem "D:\\Program Files\\Microsoft Visual Studio\\2022\\VC\\Tools\\MSVC\\14.38.33130\\include" -internal-isystem "D:\\Windows Kits\\10\\Include\\10.0.22000.0\\ucrt" -internal-isystem "D:\\Windows Kits\\10\\Include\\10.0.22000.0\\um" -internal-isystem "D:\\Windows Kits\\10\\Include\\10.0.22000.0\\shared" -internal-isystem "D:\\Program Files\\Microsoft Visual Studio\\2022\\VC\\Tools\\MSVC\\14.38.33130\\include" -internal-isystem "D:\\Program Files\\Microsoft Visual Studio\\2022\\VC\\Tools\\MSVC\\14.38.33130\\ATLMFC\\include" -internal-isystem "D:\\Program Files\\Microsoft Visual Studio\\2022\\VC\\Auxiliary\\VS\\include" -internal-isystem "D:\\Windows Kits\\10\\include\\10.0.22000.0\\ucrt" -internal-isystem "D:\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\um" -internal-isystem "D:\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\shared" -internal-isystem "D:\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\winrt" -internal-isystem "D:\\Windows Kits\\10\\\\include\\10.0.22000.0\\\\cppwinrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\include\\um" -WCL4 -fdeprecated-macro -fdebug-compilation-dir=F:\\Dev\\LLVM-17.0.6-win32\\bin -ferror-limit 19 -fmessage-length=120 -fno-use-cxa-atexit -fms-extensions -fms-compatibility -fms-compatibility-version=19.38.33134 -std=c++20 -fdelayed-template-parsing -fno-implicit-modules -fcolor-diagnostics -faddrsig -o C:\\Users\\Admin\\AppData\\Local\\Temp\\test-1c4c8e.obj -x c++ test.cpp
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module 'test.cpp'.
4. Running pass 'X86 DAG->DAG Instruction Selection' on function '@"?triangular_number@@YA?AUTask@@H@Z.resume"'
clang-cl: error: clang frontend command failed with exit code 70 (use -v to see invocation)
clang version 17.0.6
Target: i686-pc-windows-msvc
Thread model: posix
InstalledDir: F:\Dev\LLVM-17.0.6-win32\bin
clang-cl: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-cl: note: diagnostic msg: C:\Users\Admin\AppData\Local\Temp\test-dac199.cpp
clang-cl: note: diagnostic msg: C:\Users\Admin\AppData\Local\Temp\test-dac199.sh
clang-cl: note: diagnostic msg:
********************
Repros with VS 2022 17.3 Preview 3 containing Clang 14.0.5.
:warning: This is specific to 32-bit x86. :warning:
This test case was slightly reduced from https://github.com/microsoft/STL/blob/969b2e250df56690768fdf8344293624d6ab0d6c/tests/std/tests/P0912R5_coroutine/test.cpp .
Here's a zip of the original source, preprocessed source, and run script: repro.zip