<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/135719>135719</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [DirectX] DXIL Bitcode Writer hits assertion when compiling many of the DML shaders
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
            farzonl
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Icohedron
      </td>
    </tr>
</table>

<pre>
    Many of the DML shaders fail to compile via clang-dxc when the `-Fo` command-line option is provided due to the DXIL bitcode writer hitting an assertion error in https://github.com/llvm/llvm-project/blob/9cdc3aab3eae55be30003cb486f290f3ee3df3a8/llvm/lib/Target/DirectX/DXILWriter/DXILBitcodeWriter.cpp#L2245

In this instance, the instruction `I` hitting the assertion has an opcode of 67, which corresponds to [freeze](https://llvm.org/docs/LangRef.html#freeze-instruction).

```
clang-dxc.exe -enable-16bit-types -O3 -D DXC_COMPILER=1 -D __SHADER_TARGET_MAJOR=6 -D __SHADER_TARGET_MINOR=2 -T cs_6_2 -E CSMain -DJIT_COMPILED=1 -I Shaders ActivationFunctionHardmax_float16_native_accum16_256_4.hlsl -Fo - -Vd 
In file included from ActivationFunctionHardmax_float16_native_accum16_256_4.hlsl:31:
Shaders\ActivationOperation.hlsl:15:10: warning: non-portable path to file '"DataTypeDefs.hlsl"'; specified path differs in case from file name on disk [-Wnonportable-include-path]
   15 | #include "DatatypeDefs.hlsl"
      |          ^~~~~~~~~~~~~~~~~~~
      | "DataTypeDefs.hlsl"
Shaders\ActivationOperation.hlsl:32:2: warning: unknown attribute 'RootSignature' ignored [-Wunknown-attributes]
 32 | [RootSignature(ROOT_SIG_DEF)]
      |  ^~~~~~~~~~~~~
Assertion failed: isa<BinaryOperator>(I) && "Unknown instruction!", file D:/ClangDML/llvm-project/llvm/lib/Target/DirectX/DXILWriter/DXILBitcodeWriter.cpp, line 2245
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: clang-dxc.exe -enable-16bit-types -O3 -D DXC_COMPILER=1 -D __SHADER_TARGET_MAJOR=6 -D __SHADER_TARGET_MINOR=2 -T cs_6_2 -E CSMain -DJIT_COMPILED=1 -I Shaders ActivationFunctionHardmax_float16_native_accum16_256_4.hlsl -Fo - -Vd
1. <eof> parser at end of file
2.      Code generation
3.      Running pass 'DXIL Embedder' on module 'ActivationFunctionHardmax_float16_native_accum16_256_4.hlsl'.
Exception Code: 0xC000001D
 #0 0x00007ff63843c64c HandleAbort D:\ClangDML\llvm-project\llvm\lib\Support\Windows\Signals.inc:429:0
 #1 0x00007ffbf9069ea7 (C:\Windows\SYSTEM32\ucrtbased.dll+0x99ea7)
 #2 0x00007ffbf906bae9 (C:\Windows\SYSTEM32\ucrtbased.dll+0x9bae9)
 #3 0x00007ffbf9071745 (C:\Windows\SYSTEM32\ucrtbased.dll+0xa1745)
 #4 0x00007ffbf90713b7 (C:\Windows\SYSTEM32\ucrtbased.dll+0xa13b7)
 #5 0x00007ffbf906f381 (C:\Windows\SYSTEM32\ucrtbased.dll+0x9f381)
 #6 0x00007ffbf9071caf (C:\Windows\SYSTEM32\ucrtbased.dll+0xa1caf)
 #7 0x00007ff63b1a95cf llvm::dxil::DXILBitcodeWriter::writeInstruction(class llvm::Instruction const &, unsigned int, class llvm::SmallVectorImpl<unsigned int> &) D:\ClangDML\llvm-project\llvm\lib\Target\DirectX\DXILWriter\DXILBitcodeWriter.cpp:2246:0
 #8 0x00007ff63b1abfba llvm::dxil::DXILBitcodeWriter::writeFunction(class llvm::Function const &) D:\ClangDML\llvm-project\llvm\lib\Target\DirectX\DXILWriter\DXILBitcodeWriter.cpp:2650:0
 #9 0x00007ff63b19e4a3 llvm::dxil::DXILBitcodeWriter::write(void) D:\ClangDML\llvm-project\llvm\lib\Target\DirectX\DXILWriter\DXILBitcodeWriter.cpp:2911:0
#10 0x00007ff63b19e1b6 llvm::dxil::BitcodeWriter::writeModule(class llvm::Module const &) D:\ClangDML\llvm-project\llvm\lib\Target\DirectX\DXILWriter\DXILBitcodeWriter.cpp:437:0
#11 0x00007ff63b19e081 llvm::dxil::WriteDXILToFile(class llvm::Module const &, class llvm::raw_ostream &) D:\ClangDML\llvm-project\llvm\lib\Target\DirectX\DXILWriter\DXILBitcodeWriter.cpp:409:0
#12 0x00007ff638f88d74 `anonymous namespace'::EmbedDXILPass::runOnModule D:\ClangDML\llvm-project\llvm\lib\Target\DirectX\DXILWriter\DXILWriterPass.cpp:76:0
#13 0x00007ff6380a0715 `anonymous namespace'::MPPassManager::runOnModule D:\ClangDML\llvm-project\llvm\lib\IR\LegacyPassManager.cpp:1521:0
#14 0x00007ff6380a0224 llvm::legacy::PassManagerImpl::run(class llvm::Module &) D:\ClangDML\llvm-project\llvm\lib\IR\LegacyPassManager.cpp:539:0
#15 0x00007ff6380a4951 llvm::legacy::PassManager::run(class llvm::Module &) D:\ClangDML\llvm-project\llvm\lib\IR\LegacyPassManager.cpp:1648:0
#16 0x00007ff639e85cfb `anonymous namespace'::EmitAssemblyHelper::RunCodegenPipeline D:\ClangDML\llvm-project\clang\lib\CodeGen\BackendUtil.cpp:1244:0
#17 0x00007ff639e7fc2c `anonymous namespace'::EmitAssemblyHelper::emitAssembly D:\ClangDML\llvm-project\clang\lib\CodeGen\BackendUtil.cpp:1270:0
#18 0x00007ff639e7f04e clang::emitBackendOutput(class clang::CompilerInstance &, class clang::CodeGenOptions &, class llvm::StringRef, class llvm::Module *, enum clang::BackendAction, class llvm::IntrusiveRefCntPtr<class llvm::vfs::FileSystem>, class std::unique_ptr<class llvm::raw_pwrite_stream, struct std::default_delete<class llvm::raw_pwrite_stream>>, class clang::BackendConsumer *) D:\ClangDML\llvm-project\clang\lib\CodeGen\BackendUtil.cpp:1437:0
#19 0x00007ff63a663889 clang::BackendConsumer::HandleTranslationUnit(class clang::ASTContext &) D:\ClangDML\llvm-project\clang\lib\CodeGen\CodeGenAction.cpp:320:0
#20 0x00007ff63d380d21 clang::ParseAST(class clang::Sema &, bool, bool) D:\ClangDML\llvm-project\clang\lib\Parse\ParseAST.cpp:191:0
#21 0x00007ff63a54e09d clang::ASTFrontendAction::ExecuteAction(void) D:\ClangDML\llvm-project\clang\lib\Frontend\FrontendAction.cpp:1347:0
#22 0x00007ff63a667a9d clang::CodeGenAction::ExecuteAction(void) D:\ClangDML\llvm-project\clang\lib\CodeGen\CodeGenAction.cpp:1112:0
#23 0x00007ff63a54da69 clang::FrontendAction::Execute(void) D:\ClangDML\llvm-project\clang\lib\Frontend\FrontendAction.cpp:1231:0
#24 0x00007ff6386e0fe7 clang::CompilerInstance::ExecuteAction(class clang::FrontendAction &) D:\ClangDML\llvm-project\clang\lib\Frontend\CompilerInstance.cpp:1055:0
#25 0x00007ff6387e498c clang::ExecuteCompilerInvocation(class clang::CompilerInstance *) D:\ClangDML\llvm-project\clang\lib\FrontendTool\ExecuteCompilerInvocation.cpp:300:0
#26 0x00007ff637c70296 cc1_main(class llvm::ArrayRef<char const *>, char const *, void *) D:\ClangDML\llvm-project\clang\tools\driver\cc1_main.cpp:294:0
#27 0x00007ff637c626d6 ExecuteCC1Tool D:\ClangDML\llvm-project\clang\tools\driver\driver.cpp:218:0
#28 0x00007ff637c63360 clang_main::<lambda_0>::operator() D:\ClangDML\llvm-project\clang\tools\driver\driver.cpp:364:0
#29 0x00007ff637c6332d llvm::function_ref<int (llvm::SmallVectorImpl<const char *> &)>::callback_fn<`lambda at D:\ClangDML\llvm-project\clang\tools\driver\driver.cpp:363:7'> D:\ClangDML\llvm-project\llvm\include\llvm\ADT\STLFunctionalExtras.h:46:0
#30 0x00007ff63a1cead1 llvm::function_ref<(class llvm::SmallVectorImpl<char const *> &)>::operator()(class llvm::SmallVectorImpl<char const *> &) const D:\ClangDML\llvm-project\llvm\include\llvm\ADT\STLFunctionalExtras.h:69:0
#31 0x00007ff63a1caf87 clang::driver::CC1Command::Execute::<lambda_1>::operator() D:\ClangDML\llvm-project\clang\lib\Driver\Job.cpp:435:0
#32 0x00007ff63a1caf53 llvm::function_ref<void ()>::callback_fn<`lambda at D:\ClangDML\llvm-project\clang\lib\Driver\Job.cpp:435:22'> D:\ClangDML\llvm-project\llvm\include\llvm\ADT\STLFunctionalExtras.h:46:0
#33 0x00007ff638403447 llvm::function_ref<(void)>::operator()(void) const D:\ClangDML\llvm-project\llvm\include\llvm\ADT\STLFunctionalExtras.h:69:0
#34 0x00007ff638436148 llvm::CrashRecoveryContext::RunSafely(class llvm::function_ref<(void)>) D:\ClangDML\llvm-project\llvm\lib\Support\CrashRecoveryContext.cpp:235:0
#35 0x00007ff63a1caa92 clang::driver::CC1Command::Execute(class llvm::ArrayRef<class std::optional<class llvm::StringRef>>, class std::basic_string<char, struct std::char_traits<char>, class std::allocator<char>> *, bool *) const D:\ClangDML\llvm-project\clang\lib\Driver\Job.cpp:435:0
#36 0x00007ff6386c30a1 clang::driver::Compilation::ExecuteCommand(class clang::driver::Command const &, class clang::driver::Command const *&, bool) const D:\ClangDML\llvm-project\clang\lib\Driver\Compilation.cpp:196:0
#37 0x00007ff6386c3285 clang::driver::Compilation::ExecuteJobs(class clang::driver::JobList const &, class llvm::SmallVectorImpl<struct std::pair<int, class clang::driver::Command const *>> &, bool) const D:\ClangDML\llvm-project\clang\lib\Driver\Compilation.cpp:251:0
#38 0x00007ff6386798fb clang::driver::Driver::ExecuteCompilation(class clang::driver::Compilation &, class llvm::SmallVectorImpl<struct std::pair<int, class clang::driver::Command const *>> &) D:\ClangDML\llvm-project\clang\lib\Driver\Driver.cpp:2223:0
#39 0x00007ff637c621a0 clang_main(int, char **, struct llvm::ToolContext const &) D:\ClangDML\llvm-project\clang\tools\driver\driver.cpp:402:0
#40 0x00007ff637c95cb8 main D:\ClangDML\llvm-project\build\tools\clang\tools\driver\clang-driver.cpp:17:0
#41 0x00007ff6408c1149 invoke_main D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:79:0
#42 0x00007ff6408c1282 __scrt_common_main_seh D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288:0
#43 0x00007ff6408c130e __scrt_common_main D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:331:0
#44 0x00007ff6408c132e mainCRTStartup D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_main.cpp:17:0
#45 0x00007ffc56c3e8d7 (C:\Windows\System32\KERNEL32.DLL+0x2e8d7)
#46 0x00007ffc58d514fc (C:\Windows\SYSTEM32\ntdll.dll+0xb14fc)
clang-dxc: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 21.0.0git (https://github.com/llvm/llvm-project.git f5c5f9f926cb93c58e8cc6302f788474909606b0)
Target: dxilv1.2-unknown-shadermodel6.2-compute
Thread model: posix
InstalledDir: D:\ClangDML\llvm-project\build\bin
Build config: +unoptimized, +assertions
clang-dxc: note: diagnostic msg: 
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWl1z4yiz_jXMDWWXBPq8yIUiO7uZk7yZir3v7rlyIYRszsjgA8hJ9uL89lMgyZYcJ5NkPvbiTU2NJSGa52maphs10ZqvBWMXILwECFVE_S1FDRAC4ewTacxGqotrKjesVFJ8KmT5dHFLxBOUFTQbBme3N1BvSMmUhhXhNTQSUrnd8ZrBPSeQ1kSsJ-UjhQ8bJlwXEHmTKwkiz764JaKc1FwwKHeGSwG5hjsl97xkJSwbZuW5cf66voEFN1SWDD4obpiCG24MF2tIBCRaM-X6M6WkglzAjTE7DXAG0BVAV2tuNk0xpXIL0FVd7_ufyU7J_2HUAHRV1LIA6CqlJcWEFJgRFoYFw57nYVoESVSh1KswY7isMEkGcrjttyRqzaycGVeMmr_s1V_XN386rN3NZUugfTalux1A-AahIAReBrzs2iqIa8iFNkRQBlDuyNt71VDHD0TetdVdT962H9lviLbqkDunJ1nBKLZCHjacbiCVSjG9k6LUVq0gvKwUY38zEM4ASsb6stSmUq0Buiol1QBd3RCxvmfVdGO2NUC47ToZQAMonbY8QOR1_7zsYABT9sjghAlS1GziRwU3E_O0YxpO7jCczODsr3yV391-ub6Z3wM88-2z1Wrxezab36-W2f1v8-XqNvt8Zxujs43X_3KNCE6WkOpVtEJwMof54pZwASezz9fLfoBZO8A1XHSmm1HD98SyuGqEY_M7UeWWPK6qWhLjRytBDN-zFaG02frRCoXRKphual3DyZWEEzj5dwnbKays7XNB68bacKXk9nvEA5xh306Ll3VgQZgf5d3tmHIX_ct-aP_zAM7gA1GCi7W9FFJMdlIZq3y4I2ZjDcABBSgGCM2IIcunHZuxSreSELIt-BLqHaO84qxs-5W8qqzGuICUaNbyc5IE2TIoBSy5_mqNa_KnkKIfdNIpZGKFWIPzMgihH0IQ5xAg3DXDDos5xeJeh9C9fvgD4fz_nv2NXn2J2huViRHAGTrRZSO-CvkgIDFG8aIxTof3UpoFXwtiGsUAiiFfC6lY2Sqi6zI5dNGdCjBqYYaXJwKS-7u75Wpx_dtqNr8CKD2orNfBCXfgZdnBC1hHzEqLlWsCcH7JBVFPLTupAJ4DlFwDlEKAIoAiq6U_OlKj9ew7K8jb6Z21viG363l2e_Pcf_4Ib5hDtxd0LvHLzTxbzKFuii03kMCiWUPFrElZ8323g-daN8y6MkhE2a9Q50CpInoDC0K_GkVav7tTbKckZVqzEmrZqPax7Um0lpQTw0qoGgE1VXxnrOtbGEK_wrLZ7toF603bCfui5FqRLSRq3WyZMBY1_A9yjMDL_CkEOGeyAngOd0RppiAxkInS7lLWwICXoU5fud281kx0qxF4Ge5a7hthlyHcEa3tsnNhwXxbsLK0ZhVb_7OVZdM6tu9xuyi2Mzp_pKyNSywmO23eY-7ZP9-tR4CwB71H-yCuqggnAaZRQOHvRJQ1ywprqm7hhPlh4YT5yC7bW_vDCxDmi2ZnDRyE-Z9clPLBeijnF2o95YICnAUoBTjzuuH94_BFlXpRykgMAUrydtSBkP9eLOe3GIEwb6gyBdGsnJZ1DdCl95jabtbNtELRidCCsPQDQm23o1A8Fhr7cRC-Xyix3Y5Cg1OhuPgAfWK7HYWGJ_QrnPgfoG-7HYVGp0gpqT6ClJLqKDQeGl_hkzSkFXT2hDOAs_KR1-3VM3_bPnaR9PXQ5ye0tmvrKGPQCqkU2rS7Rg4b4TIH60mNvT_tuNiSuv43o0aq6-2uBjgf9cDzVlD6zgXS7Sxh3u8sYT7YWdqb5zsLzhAKosG6SU40V1QFebfmerdyRm1901Bnv4xqFHoDqumYasoCgt9NFaBkL3n5C0mkvt-RsG7OOyXhF9FZEi8RuHXbwpmZahv-iXkKcDxg6J8y9BL_LEMnw8pcyiv-RkrPl6ciDyupjWJk-4tZe-mANRptn1WSlHFgk1wipHjayka7vELvXFgWt9Ddhm_FfyFad2wacSc62j-eRntjR-s4xNGAAh5R8IgX27zmdQq3X6y0WyLIurfSj1O4vgdhfsPWhD4NpHZQ_RAN11FwChahYGAVtZPSXg9ktQ68Q_mywX3Ijl5FH-KhsYQn4IM09L8N_h8B7kdBMkAeDZGnLAlpVXzbzLmxSd22qJ9-Z_WuZ3LfCBuNrpn4wnfMJUzfBO6yjQNy2_03JkCYXxL6lYnyD8PrHjgKggHweAw8riiiHwXOBs9_LOTYG0BOTiF7AWvTrSOMTshdY3aNOdjF4KW8PcRU191Z3NiNjl50wO5cmqBf8rYLo7g7PzvXeDDCzLYy0WyHA3RQsy7SeN79WhjVaL5n96zKhfliFMD56Uv7qvOUdstYPGnDtu4goBenTdm2N4L_b8NWu7NS7Kaxc9vpqt06rIA2PjxKKFlFmtqsSlYzw94kBc9HYJ6zz6XQzZapVklvWKnvsJ7xNjyKlkgU4SRJXwHUPmzzvaUiQtcu4fxD8LNmlS2WuRSGPb491HiJSXfV2kXHBaPBQkCjmKnEiVcifwjmi83Ds8XyHNAF25LemAsp6-PvuyG7YfrfbLHs9Z4O9iU0in5IGDAvLU8Ud6Ws5g4roXU1j4w2hvWL4-0x6hhiL3pwOdKrj4OBjSB0YiMxGYMdTc0PBfr69Pu-jwYw8YlOSxKNTPkVhf5EVSI8nPdxPBIxr2Lxa374vDafme946A-utQGVUxg9GS8MB2TG8UnMgjShQ1Qd7KOwvaTkJQpndqCPuL6exNIu3jB_EULvQbyhBxmFLTGNPZRGkFJ_tSX8XDiVKUWe7C6Hc7oh6pCBZL17Hz9EObRW9m5mRspagzAvFd-7IL2HdMgdByEMisckIhSVEez1kPtWMd8xdHvRD-wPgj6UnAyMceS1M9zqz6kM4Lwm26IkK89tg_aZ7I_qUfJ9ehmBw9FQK-kzcKgczGTVnV-slJtNLuyMJa-d7rTT6ma4nfBu1R1YUVLXBaFfV5UAOAeR1_KG5A1npG9liG1y5gLR-Zuj-e5LwPFBNluCMF8sb_pDHFLPH40ierqx-esg9xuf_hKfMlL6L2vxzIo5o8fThXOqx7F1fJfM7tlP0lQ0yN2wf6IpUiUjR9_NaOv6cj9vawPGm9LJgvG_e8G0LnLWG9NnWRyOZgZ-HaNn2EP88ix3Li350bb_DbDdF9tfY_fjM4_Aw0EQv2r3XTTxshH34cavs8jg5MtN5AfJgEOuiN7cMyr3TD11QfshAV-QitVPZ9beq8zffcRw_Bp0Dk2_6YxsNTy1VZKi966z1zf2cb7Y1u2Q-kyed0x6T_K7Q-eCaE5tEui-rTs3dS6jtM9XRhFudP_WWXGkrm00I9XgLefrsj596UONN1rZO_1ENA5mKfaI_6LuXQRGnkXe_YSciQhPutvXzp3xvrFHNsruvlclAzqH_G7oMOJT1aAkfK9qPstCf0svn2Vxw20c8trZ9_MN8tTidoSrNuz5gF57q_up6kXhII0af85KojhNquIlwLPB9SgdeDEVeWFy_nn1fnyrn43CdoTwQJmnoTHyyShuR0kPvA92WwfTsTwqwqYW_XHP-74vvS3eDbxBuh94Y9hpSIsEWsDfHq5oeF0Ohns50WqrVoYg_MHJSDCM8gIvob4fpJCLvfzKVkMoBIT56kGqryDMfRDmdhCtKAjzPT2AcBvfnmpDlGl2hzeO9-yRrajcbqWYclHb0H-wvwfoFAtKEFytNFWm6-UgrTTb_GRYKBmkhQE-xYU9dgbXT8aEh8cwQfAME2LOdvL75aIV8uPxDDL2kRENQhgaRhSzpHyhqMOdY7tSif-a3_9rfoPRdHZz4yolkO3VVkpYmdFQZlKGflDRb5VfCFPW9aH0orBdWoGH2i2As7bi-FDRBavuvKWvbu6q8fpiZu1qeezIjWZwsnfPGHNrpD8LOgwB90xp62iRP_Wm3pq7JPx9hW9T26sKaVilVYoiWqSYhglLKI2wh6o4SYI4SL008qLCa8fuPoniDJaPvN77UzTpKxjbWu-tLFkdTdGEyu3OBoxettwoRkroWmzPndT80RXEakPqmpUz7pT0ZldUcAG87NLeWd9ZcVd8CdBlI2zIueV_s9I6XYAuD_XP-nRuhHRZIyw5WQupDadwq1tBgzLlT-UFLlOckk_swo-DIIoTP0o-bS5SSsLQD4uAsiDyAi-mNEmrIilI4qEgLT_xC-Sh0Av80POCFCXT2CursgpjUkSlH6IEBB7bEl5P-4LqT64K8cLHYeynn2pSsFp3tfeCPUDX2lXfqwunmqJZaxB4NddGH8UYbmpXtH_4bD1ri-S7T-7wz0ORvB4UiLsq_LZAn4s13J4v5f_UqPri4_WVHbn9Bfr_AAAA__9LKxF9">