<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/54412>54412</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Clang crash during codefen of thunk function types
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang:codegen,
crash
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
omjavaid
</td>
</tr>
</table>
<pre>
Clang code generation fails with an assertion failure in CodeGen/CGVTables.cpp
This came up while building pytorch using clang-cl on Windows Arm64 platform but it is also reproducible using tot clang-cl on Ubuntu 18.04/x86_64. Seems like there was an effort to fix https://reviews.llvm.org/D100388
Crash report below:
clang-cl: /home/omair/work/lldb/lldb-dev/llvm-project/clang/lib/CodeGen/CGVTables.cpp:533: llvm::Constant *clang::CodeGen::CodeGenVTables::maybeEmitThunk(clang::GlobalDecl, const clang::ThunkInfo &, bool): Assertion `OldThunkFn->isDeclaration() && "Shouldn't replace non-declaration"' failed.
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: ./host-linux/bin/clang-cl -cc1 -triple aarch64-pc-windows-msvc19.14.0 -emit-obj -mincremental-linker-compatible --mrelax-relocations -disable-free -main-file-name conv.cpp -mrelocation-model static -mframe-pointer=none -relaxed-aliasing -fmath-errno -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +neon -target-abi aapcs -fallow-half-arguments-and-returns -D_MT -D_DLL --dependent-lib=msvcrt --dependent-lib=oldnames --show-includes -sys-header-deps -stack-protector 2 -fcxx-exceptions -fexceptions -fexternc-nounwind -fdiagnostics-format msvc -ffunction-sections -fcoverage-compilation-dir=C:\\kg\\python_test\\github_packages\\pytorch\\build -D ADD_BREAKPAD_SIGNAL_HANDLER -D AT_PER_OPERATOR_HEADERS -D CPUINFO_SUPPORTED_PLATFORM=0 -D FMT_HEADER_ONLY=1 -D MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS -D ONNXIFI_ENABLE_EXT=1 -D ONNX_ML=1 -D ONNX_NAMESPACE=onnx_torch -D USE_EXTERNAL_MZCRC -D WIN32_LEAN_AND_MEAN -D _CRT_SECURE_NO_DEPRECATE=1 -D torch_cpu_EXPORTS -D WIN32 -D _WINDOWS -D NDEBUG -D USE_KINETO -D LIBKINETO_NOCUPTI -D SYMBOLICATE_MOBILE_DEBUG_HANDLE -D EDGE_PROFILER_USE_KINETO -D NDEBUG -D NDEBUG -D USE_GCC_GET_CPUID -D TH_HAVE_THREAD -D NOMINMAX -D CAFFE2_BUILD_MAIN_LIB -D ONNX_BUILD_MAIN_LIB -O2 -Wno-deprecated-declarations -w -fdeprecated-macro -fdebug-compilation-dir=C:\\kg\\python_test\\github_packages\\pytorch\\build -ferror-limit 19 -fno-use-cxa-atexit -fms-extensions -fms-compatibility -fms-compatibility-version=19.14 -std=c++14 -fdelayed-template-parsing -finline-functions -vectorize-loops -vectorize-slp -faddrsig -x c++ conv-9e476c.cpp
1. <eof> parser at end of file
2. Per-file LLVM IR generation
#0 0x000000000608d293 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./host-linux/bin/clang-cl+0x608d293)
#1 0x000000000608b02e llvm::sys::RunSignalHandlers() (./host-linux/bin/clang-cl+0x608b02e)
#2 0x000000000608d61f SignalHandler(int) Signals.cpp:0:0
#3 0x00007f3d86f0a980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
#4 0x00007f3d859b3e87 raise /build/glibc-uZu3wS/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
#5 0x00007f3d859b57f1 abort /build/glibc-uZu3wS/glibc-2.27/stdlib/abort.c:81:0
#6 0x00007f3d859a53fa __assert_fail_base /build/glibc-uZu3wS/glibc-2.27/assert/assert.c:89:0
#7 0x00007f3d859a5472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
#8 0x00000000064d81a8 clang::CodeGen::CodeGenVTables::maybeEmitThunk(clang::GlobalDecl, clang::ThunkInfo const&, bool) (./host-linux/bin/clang-cl+0x64d81a8)
#9 0x00000000064d8967 clang::CodeGen::CodeGenVTables::addVTableComponent(clang::CodeGen::ConstantArrayBuilder&, clang::VTableLayout const&, unsigned int, llvm::Constant*, unsigned int&, unsigned int, bool) (./host-linux/bin/clang-cl+0x64d8967)
#10 0x00000000064d93e7 clang::CodeGen::CodeGenVTables::createVTableInitializer(clang::CodeGen::ConstantStructBuilder&, clang::VTableLayout const&, llvm::Constant*, bool) (./host-linux/bin/clang-cl+0x64d93e7)
#11 0x0000000006848491 (anonymous namespace)::MicrosoftCXXABI::emitVTableDefinitions(clang::CodeGen::CodeGenVTables&, clang::CXXRecordDecl const*) MicrosoftCXXABI.cpp:0:0
#12 0x00000000064dac39 clang::CodeGen::CodeGenModule::EmitDeferredVTables() (./host-linux/bin/clang-cl+0x64dac39)
#13 0x0000000006379ebf clang::CodeGen::CodeGenModule::EmitDeferred() (./host-linux/bin/clang-cl+0x6379ebf)
#14 0x00000000063782e9 clang::CodeGen::CodeGenModule::Release() (./host-linux/bin/clang-cl+0x63782e9)
#15 0x0000000006bd0074 (anonymo
us namespace)::CodeGeneratorImpl::HandleTranslationUnit(clang::ASTContext&) ModuleBuilder.cpp:0:0
#16 0x0000000006bcd519 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) CodeGenAction.cpp:0:0
#17 0x0000000007d0a594 clang::ParseAST(clang::Sema&, bool, bool) (./host-linux/bin/clang-cl+0x7d0a594)
#18 0x0000000006b01a60 clang::FrontendAction::Execute() (./host-linux/bin/clang-cl+0x6b01a60)
#19 0x0000000006a7812f clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (./host-linux/bin/clang-cl+0x6a7812f)
#20 0x0000000006bc72e3 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (./host-linux/bin/clang-cl+0x6bc72e3)
#21 0x0000000003c500b0 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (./host-linux/bin/clang-cl+0x3c500b0)
#22 0x0000000003c4da20 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#23 0x0000000003c4d70c main (./host-linux/bin/clang-cl+0x3c4d70c)
#24 0x00007f3d85996c87 __libc_start_main /build/glibc-uZu3wS/glibc-2.27/csu/../csu/libc-start.c:344:0
#25 0x0000000003c4a74a _start (./host-linux/bin/clang-cl+0x3c4a74a)
Aborted (core dumped)
[conv-9e476c.zip](https://github.com/llvm/llvm-project/files/8283393/conv-9e476c.zip)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1WV1z2joT_jXJjcaMsfkwF7lwwEmZw9cAaXt64xG2DDo1NiPbCemvf5-VDMU0fU_SmdNJwVpJu89-amU2efx6N0x5tmVRHgu2FZlQvJR5xhIu04K9yHLHeMZ4UQh1pldKMJmxIbY8iuzGeRg-fl7zTSqKVnQ43NijG9tf72TBIr4XrDqwl51MBdtUMo0lZB1ey1xFO1YVNIpIvhWlDNy_yCzOXwrmq32vww4pL5Nc7bGzZBJ_BeNpkTMlDiqPq0hCZM2kzMsGo6dNlZUVa3stuwOAR68X9jotthJiX7BUfhes3Amo8cIL0k8kkFOCC0vkke3K8lDcuD424k-JZyleilaaPu9budqCNGrbtut5RlPzOVS82BEy4rMRaf5CDC4WnNCBzMBil-8FvvI9lwrfL7n6jq80jTf1lxWLZ_34vLeg7j8iKjHUXIgsad3vPOD6XdclQbSbcLj-MM-KkmclZBsoJ7LhcDmoORnanr9uRLCX5XpXZYDoXWx-TPMNT0cCSjlDRBAksItpvWOcJTlk9mjFJs-xckDA_HNA3fTseRrrtQ-ZdeMGsiCO3MQhBGKHYdDDl7Pa5VUag94vydopjwTL8gzWutjjYFpHqohbxvqLSeCvAlZUG6jCOCJqe3IWnN50-BZBX21aUb6v7f-rG2RRVLCQ84DgiZELUVrFOqRYpONgw6PvpQI2Uvug4zUSUDlmRV4pQ6adyKs8krzEhKoyVkRKHsoa8qoEExZX-8M5kmxMDRYq3yq-Z1xtq73ISgLOWjqkitJKZVYdMdjI7BQulBJWFLWZVYI9UoZzZF-vYx0i68UknLUvnqP2oNXutGxmCdjIyjf_MGsP1ZQgKTwl1t-FsmCXA-xMuWdZeyVSfrTwmUfa-AWzYllQAFmJEliCAM-sBK6wMqoGiJJnilGmt9abrD0iL2UI0FJGmEmgn7AOucxKoW7cERwMTlqUiC2eSq6T3kr2vNxZQqksxyDLLZVXGZUYiybASMekqiLUG7NNAF8Jy4nSig6VKXgksqYlgpdU3W6c-0wgOE90vpGw2iHC7oSnSG5rx9PEOrvAgjOBD3vJAKNwuqbP0WQCE8XiILIYqyxKWndEpkbY_TqRI66hNxhYxQ4i6rDCuHgtrJ3gMayPTUSg2KB4LAXpxhzgio5HSxwjcajdkFwNYMossjJYiJwOUiz5NkPMyKiwqMzykhE2zCRVFmm_FCI6MYjyZ5wNW6H9L1Pjt1iSe4YUoN0h_r5vzTcq_C7PwlIUpSGYnAoPgA0exXkVnQNmoE8HWI35o1F4vwz8vxb-KFyNH2f-JPzkz0aTYKmn1-EiWIZzfPjr-TL8FPijYLmiqeHiaTx7mIerp8VivlwHo3Ax8dcP8-UUIG1a8TBd1xvC-WzyN8htIk_Hs_G3cDRe-feTIPw2XoRLs2i4HLpOOPwUDP_SEuaz2dfxwzgMZnpl8HV9YkEz4XTSGM78abBa-MOAnJtlx9Ace5h-WunNwZKUm36DGKJ-Gc8gDZVqFkLfcIoHIgPFOlwFw6dlEM7m4ShYLIOhvw5OsjTXEOEMlqT36sxL78bTaP5FE2ej4P7p8QTgr_EsWM9pNBnfmwH4D58W6zERV39P7-eTMUkKp_P7MfTV22tn0JJg9BiEi-X8AZPLsMnzp6ym1MfhMHwM1iE5a0TE9Sdw_ByE609kdL1hDodM_a_ap_7DQ-CE90_jCSzij2chwJ4tfE2eQ-UvqAPIEiUiqquXBwPC-IXi_ufknkcq1yQcCP9xZCeoUyhDqaQTqD0wBasqkFBHbgHNEWRUtMKiVM2KOu0wPhVcmcry9Q2ShcSk5RQPVMKpPMQYRKhi-CMCFEz5KxQuxZ66KhRXruoaKjMUdlTrOuch9FkXFflDWGmeHxqEIj1QCYxj7MbmI6uF6LpuDUSn34t-NoFtOq9u3KHIExzsjGQKxVBnUPdYnjA6FsxKR59sqG9EYpPJ5ykbLy_6UbMKddm1mX20T_96thc7A_eiz0GpNA8LhdNDn6FrcxB7Pxcp_hKi8CnB93VrgrWmz_D-5SSFrvaxFku9zBlX-wrXxnbEW7iWVbaS24ynn3BmpPDcucV5r2ji3BDtXJuk105YQwiY1xoa8qlNtPX_MyO3ZtRP3NjrJTYfeDYLQ4Vgz5UIFXWP3rn7NE21AWtts8pMHMod7Bq3irxla8RtB1waeDuXYrqDjSu8PlNcFnTwPuh0oTYMzCKr-la5L6vz0Gk5fQwKrQUeWmQz2JaORTxVmTwagu6dazNq1q2I2uJ2U-HuFZJuP2kzvsm1pu9DUsbGGnqXFuJdCek1hfCum3BY1dypQmpTww1_v-5m3_nBiBw0RfavRXb6zjt8F5HXetprro0tDa95jSjrxF6be-w_ukq8dYnQvVzzJvHupDFoG-oMrtUZ9PofUgdF0IyHKMZoUCm_vN8zMNcvXyn-ek9epqTsXSlr-E34a44L76W-VUYRL2JTp4Zv3Otwrft14Zt7_8B2MM3ZdlTq7CvbDVzxMdvhUoFDyJDGmSwlmvMfukz9mwFXup3_uAV_a7GPm4O0bZijWfq9jtcZtIkfx73ldZ9XBdN9_UEfQwODYirReRR5Ug6_fvXvx4ZIFy-jwUjgXJb6PP6_RmmY9hdrgPdSRLmKKbFO5vBJ2yvxvx4HpJdz5WYeIWv-Bcs0jysc6ppEuQ5F0PeI-IzxQ4edkdkwttsA5fYHYpP8KagPojHCGmg6V2g8R3zIREuRCtT-DwMhOQ0g3QaQTYza37mIQbPwzUisUVGjlasx2kNDNp0DeqesMC3xE-KxGYv-ao1kQudqkgxRpTWrk_PtmOo1cUZxt90w2D0aNnSHlKS4Wqs_x1Kr5eum9m0s_Uss_djm3UHnEsuC-lUwbkpaiT1vHEMfriG1qIb_mqfrxm7znn2J5UGRdlls9KlD-Siiqvxo8BjeDeHNs5D3vbZzlVN0MRJqrCtnJBria0QNG12hNR55L0Aj_xKgY19FTd8R7iXAGspPnM_1m6Xr4nmlhymG77acltsA1ij9btS17Q3cFrVDeu3VuHPok38pcBEaRjuuflZjN9BVu0ED4TmX8cfw1eIb-JwmPtRT2PJkrWF7rQP3AuVqz9P0s77umVLwBljtzFjJ59_kuONeC-3bESODvF8TvaehydWlYdCLcGkIQ-paQ3gTnXQt4V1NdFRUp9uDedSTmo9uqN1Op6lT90on3u-gidcbPqAV7Tpr5dONAX0ZxSiuV_pVL51JJ6XNZ_f-8mr9Qx5uuiPs-PAra7pY0xXJczzXpbvrwzVfZ3Ab37lobwb8tpRlKk4_DelX2nGlZP07USIyur2X1Jqz03sDVr4eRHFbqfTuz1-ndzudtnO7u-vbnCKg17e9vtcRjiucLu_3vJ6XJHYUbW5TvhFpcQfr3DjOKcMJ21aY9_9D-rFAI6dhd3Qr7xzbcWxUfXvg9Nvdlsu7tmPb8EmvN3Ac96Zjo7LL9PxDz6260zg31bbAZCqL8uevQLe4fVFbLTQG8OdVucvVXb7_hz9zGd9qne60Qv8D88ly3w">