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

    <tr>
        <th>Summary</th>
        <td>
            [DirectX] DXIL Bitcode Writer hits llvm_unreachable
        </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 (3938) DML shaders fail to compile under clang-dxc with the `-Fo` command-line option supplied due to hitting an llvm_unreachable https://github.com/llvm/llvm-project/blob/9cdc3aab3eae55be30003cb486f290f3ee3df3a8/llvm/lib/Target/DirectX/DXILWriter/DXILBitcodeWriter.cpp#L1025

Example stack trace:
```
In file included from AdamOptimizerMoment_float_256_16.hlsl:7:

AdamOptimizerMoment.hlsl:7:10: warning: non-portable path to file '"DataTypeDefsOld.hlsl"'; specified path differs in case from file name on disk [-Wnonportable-include-path]

    7 | #include "DatatypeDefsOld.hlsl"

      | ^~~~~~~~~~~~~~~~~~~~~~

      | "DataTypeDefsOld.hlsl"

AdamOptimizerMoment.hlsl:26:2: warning: unknown attribute 'RootSignature' ignored [-Wunknown-attributes]

   26 | [RootSignature(ROOT_SIG_DEF)]

      |  ^~~~~~~~~~~~~

These should never be used!!!

UNREACHABLE executed at D:/ClangDML/llvm-project/llvm/lib/Target/DirectX/DXILWriter/DXILBitcodeWriter.cpp:1025!

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 AdamOptimizerMoment_float_256_16.hlsl -Fo AdamOptimizerMoment_float_256_16.dat -Vd

1.      <eof> parser at end of file

2.      Code generation

3.      Running pass 'DXIL Embedder' on module 'AdamOptimizerMoment_float_256_16.hlsl'.

Exception Code: 0xC000001D

 #0 0x00007ff63843c64c HandleAbort D:\ClangDML\llvm-project\llvm\lib\Support\Windows\Signals.inc:429:0

 #1 0x00007ffbf73c9ea7 (C:\Windows\SYSTEM32\ucrtbased.dll+0x99ea7)

 #2 0x00007ffbf73cbae9 (C:\Windows\SYSTEM32\ucrtbased.dll+0x9bae9)

 #3 0x00007ff6384af76e llvm::llvm_unreachable_internal(char const *, char const *, unsigned int) D:\ClangDML\llvm-project\llvm\lib\Support\ErrorHandling.cpp:214:0

 #4 0x00007ff63b1a0429 llvm::dxil::DXILBitcodeWriter::writeTypeTable(void) D:\ClangDML\llvm-project\llvm\lib\Target\DirectX\DXILWriter\DXILBitcodeWriter.cpp:1028:0

 #5 0x00007ff63b19e3e9 llvm::dxil::DXILBitcodeWriter::write(void) D:\ClangDML\llvm-project\llvm\lib\Target\DirectX\DXILWriter\DXILBitcodeWriter.cpp:2888:0

 #6 0x00007ff63b19e1b6 llvm::dxil::BitcodeWriter::writeModule(class llvm::Module const &) D:\ClangDML\llvm-project\llvm\lib\Target\DirectX\DXILWriter\DXILBitcodeWriter.cpp:437:0

 #7 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

 #8 0x00007ff638f88d74 `anonymous namespace'::EmbedDXILPass::runOnModule D:\ClangDML\llvm-project\llvm\lib\Target\DirectX\DXILWriter\DXILWriterPass.cpp:76:0

 #9 0x00007ff6380a0715 `anonymous namespace'::MPPassManager::runOnModule D:\ClangDML\llvm-project\llvm\lib\IR\LegacyPassManager.cpp:1521:0

#10 0x00007ff6380a0224 llvm::legacy::PassManagerImpl::run(class llvm::Module &) D:\ClangDML\llvm-project\llvm\lib\IR\LegacyPassManager.cpp:539:0

#11 0x00007ff6380a4951 llvm::legacy::PassManager::run(class llvm::Module &) D:\ClangDML\llvm-project\llvm\lib\IR\LegacyPassManager.cpp:1648:0

#12 0x00007ff639e85cfb `anonymous namespace'::EmitAssemblyHelper::RunCodegenPipeline D:\ClangDML\llvm-project\clang\lib\CodeGen\BackendUtil.cpp:1244:0

#13 0x00007ff639e7fc2c `anonymous namespace'::EmitAssemblyHelper::emitAssembly D:\ClangDML\llvm-project\clang\lib\CodeGen\BackendUtil.cpp:1270:0

#14 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

#15 0x00007ff63a663889 clang::BackendConsumer::HandleTranslationUnit(class clang::ASTContext &) D:\ClangDML\llvm-project\clang\lib\CodeGen\CodeGenAction.cpp:320:0

#16 0x00007ff63d380d21 clang::ParseAST(class clang::Sema &, bool, bool) D:\ClangDML\llvm-project\clang\lib\Parse\ParseAST.cpp:191:0

#17 0x00007ff63a54e09d clang::ASTFrontendAction::ExecuteAction(void) D:\ClangDML\llvm-project\clang\lib\Frontend\FrontendAction.cpp:1347:0

#18 0x00007ff63a667a9d clang::CodeGenAction::ExecuteAction(void) D:\ClangDML\llvm-project\clang\lib\CodeGen\CodeGenAction.cpp:1112:0

#19 0x00007ff63a54da69 clang::FrontendAction::Execute(void) D:\ClangDML\llvm-project\clang\lib\Frontend\FrontendAction.cpp:1231:0

#20 0x00007ff6386e0fe7 clang::CompilerInstance::ExecuteAction(class clang::FrontendAction &) D:\ClangDML\llvm-project\clang\lib\Frontend\CompilerInstance.cpp:1055:0

#21 0x00007ff6387e498c clang::ExecuteCompilerInvocation(class clang::CompilerInstance *) D:\ClangDML\llvm-project\clang\lib\FrontendTool\ExecuteCompilerInvocation.cpp:300:0

#22 0x00007ff637c70296 cc1_main(class llvm::ArrayRef<char const *>, char const *, void *) D:\ClangDML\llvm-project\clang\tools\driver\cc1_main.cpp:294:0

#23 0x00007ff637c626d6 ExecuteCC1Tool D:\ClangDML\llvm-project\clang\tools\driver\driver.cpp:218:0

#24 0x00007ff637c63360 clang_main::<lambda_0>::operator() D:\ClangDML\llvm-project\clang\tools\driver\driver.cpp:364:0

#25 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

#26 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

#27 0x00007ff63a1caf87 clang::driver::CC1Command::Execute::<lambda_1>::operator() D:\ClangDML\llvm-project\clang\lib\Driver\Job.cpp:435:0

#28 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

#29 0x00007ff638403447 llvm::function_ref<(void)>::operator()(void) const D:\ClangDML\llvm-project\llvm\include\llvm\ADT\STLFunctionalExtras.h:69:0

#30 0x00007ff638436148 llvm::CrashRecoveryContext::RunSafely(class llvm::function_ref<(void)>) D:\ClangDML\llvm-project\llvm\lib\Support\CrashRecoveryContext.cpp:235:0

#31 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

#32 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

#33 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

#34 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

#35 0x00007ff637c621a0 clang_main(int, char **, struct llvm::ToolContext const &) D:\ClangDML\llvm-project\clang\tools\driver\driver.cpp:402:0

#36 0x00007ff637c95cb8 main D:\ClangDML\llvm-project\build\tools\clang\tools\driver\clang-driver.cpp:17:0

#37 0x00007ff6408c1149 invoke_main D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:79:0

#38 0x00007ff6408c1282 __scrt_common_main_seh D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288:0

#39 0x00007ff6408c130e __scrt_common_main D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:331:0

#40 0x00007ff6408c132e mainCRTStartup D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_main.cpp:17:0

#41 0x00007ffc56c3e8d7 (C:\Windows\System32\KERNEL32.DLL+0x2e8d7)

#42 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/eJzEWttz4yqT_2uUF8ouCXR9yIMjO2cym5xMxT7fOfvkQoBsdmTQAsrle9i_fQskOZZi5zaXbyo1lhA0v266m25orDXfCMbOvejCg7DE6t9SVB6EXjQ_w43ZSnV-ReSWUSXFWSHp0_kNFk_AgynKUOrBDMxvroHeYsqUBiXmFTASELmrecVAIyhTgFRYbCb0kYAHbrbAbBnwYn9yKb3Yt113WNBJxQUDsjZcCqCbuq44o4A2zJLbcmO42AAsQFXd79aNUAyTLS4qBrbG1NpDMw9eevByw822KaZE7jx4aft2P5Nayf9hxHjwsqhk4cHLjFCCMC4QwyyKCoZ830ekCNO4hJlfIsYQLRFOD-hwO26F1YZZOnOuGDH_2Kd_rq7_Vtww1b1ccEMkZW3blNS1B9F14MPI82eeP1s84l1dMaANJt-BUZgwy4A_82K_-_NnVwKUVoRckKqhjIJSyR2YUby7rQ3f8X8zdSN3TJh1WUls1jCK10E83Va68tAs6Qj6syMjDjsFvodm4AErwcXGPgopJrVUxgm3xna9ZIvEg4kH4RwbvHqq2ZyV-raiLS0I7Ud0AXTNCC_t0rmhlJel1QsuAMGatTw4YgLvGJACUK6_Ay-6mPwtpOjnnXRMTywRL5q3nAAAQAK8JAceRF0P0CEyRxDtB4F2ULT4v2P_XvQ7zeNbAoWx_W8k0EZ8F_JBAGyM4kVjnCDvpDRLvhHYNIp5MAF8I6RitBVFN2SyH6IPhQDjjp-LEZX07vZ2tV5e_bGeLy49mA0k1zI3lkL7fbVlmgG9lU1FgWD3TIGCgUYz6sGg-3Md__rzbjHLv8wurheAPTLSGEYBNmDeGmBuDX1-c_3S6H6CCVldhdEeyrfrxWy5ALopdtwADIpmAxSzGuQ8xke9Ate6YdqDlwAL2hudc1VEYb0FBSbfW0uFOagVq5UkTGtGgZaNapvtSKy1JBxbuahGAE0Ur820hbx09k6bXb23Tn_q-dk3JTcK7wBWm8aqkwX-7DSn7JGBCRPOMIK44GZitV2DyS0CkzmY_5Ov89ubb1fXizsPzQPbtl4vv8zmi7v1anb3x2K1vpl9vbUf46Mfr_50HyGYrADR63gNwWQB8uUN5gJM5l-vVv0E83aCK7DsHP67_BGYXMq3e1JswORftJVLYOXioZzJ0kMLUGOlmbKaxgQFsnQ-pO0Jbc9cUgY2TDCF7QbSfkH2y10jrCGCGmttDc_qFljsCkap1bXE-qCdpE3r397nXmEy7R05Ye2OZQHYVfMfc9_-C3rL8yDygf9o25KyjFEaIhKHBHzBglZsVlh9ddYT5XvrifKBcrav9ocXXpQvm9pquRflf3NB5YO2bdYJVHrKBfHQLISZh2b-M4LgGUFRJohkDCd2C8_biQ_o_PdytbhB0IvyhihTYM3olFaVBy_8x8wOs25lTxeO6BaYZZ-ga4cN6KKhxHCZxMzt_JYumo1jgDUXhimBKw-mZIsVIFJoAzw4s1b5sqURLuixZm5cBPNJ-S-UksotJBebzkfBIBzKPjzkpQiwH8LsgBf6yKv26YXXa5sf7LPdjFaWVQ-m95LTj6PufG6U9z43yg98bvtywuemQ4aiIUMZQ-zjDP12PmCajviIx3wERXyUj1M83Di3YXWuss7leWj7Ya9z8e_jMkTJkMlkzKSfBkeZdGQs2ZW85O_kKgfjPgo_rKU2iuHdb2bcH7m8dOBCyjSlSWizDiykeNrJRrsIVNduR09a9G5bsDN8w1p3DDXiVnSc_3xO2hc7W8dGEg-5yAZc-NhPgugtLm6-WYI3WOBNr66f5-Lqzovya7bB5OmAau8bIhg847X7jD_GC2F46Lgdofb5gNzVrq72QE9r3qcU6lUGIpQN8Qcj_GEWBW_j_49gD-IwHYKHh-AzlkakLN5WeW5mWrNdUT19YVXdM3PXCBvSbJj4xmvmcvM3sbuIdQ_eDv-DCS_KLzD5zgT9y_Cqxw7DcIgdDbEnJYHks9jZQfvPRZ34Q9ThGLUfsjZwf0bS0bltTN2YvYIcdMrbsxJ1JbTBgrChbx10dNhuXcSpT7ngpVFcbO5YeezjXhtdHMREszucoIM6Iy6GPjL8ShjVaH7P7liZC_PNKA_l4073Zec77T6yfNKG7Ty0eCanDW2_N4L_b8PW9VEqdiep3Ta7bvcTS0Ab1RDzTIGyEjeVWVNWMcPeRQUtBmBecp9LoZsdU62Q3mGyH1CgwfZsFWgQS-E4RmmavYKpbWxTh5XCQlcu3flL8KOaNVuucikMe3x_FHKKme6pVY2OHQRH5jCIqChKfQqDQzzfbBY3W66OYV2yHe5VupCyev79MGo3Tf87W6566WejzWoQG-EoZH5GR-K7VFZ-e5No3U577tFbyfvj2CHKnvTB40C6AQpHypKOlCXBQ7yDNfqpWF_XgyAI4BBpNpIsxfFArV8R6y8UKERDBYDDaCVmfsmS1zzzcZm-UOXh7J80vQNuxjD2mVkUDfkZRi8JC7OUHALrkD_Tu5cEn-LiyLb0GX_Y87GythzlJyH0PsUf-hQ4CGoSkvgwiwEhwXqH-bF4a6YUfrK7H8pHiX_n9l-cBlh1-zBzRspKe1FOFb934XwPqU83s2GAA9GQjxjGNAa9NPLAiucHZm8f9kcQw8AQhqO5EYr9dqlbKTrBeSiv8K6geO27TdK2yZopbKTyYPpj0hngQ_FINtELfJAeLGnZCGdJa-WWlQu7dOlBxLPDVfUvRozsMom8XV-31O3Kd0a4Z4zgqiow-b4uhYdyL_Zb1vdH2T-DSeRuWGywunh33N-dOz83zOYrL8qXq-vLTgi4WjwahfV0a7PeeCjIwQaMA8IwDU4L8oj1HBHl2IjGohzqyA_R7Np-kbDiYa4Hk5GwcJkOvH-3rq0zzIO8vaccblYjywl-2HJapznvVeqrLPYnOyNnn76AH6HTa905ufRnG8EbeLt7wd9mAMPzktBHYZi8agBdrHFam_tg5Heq5osbgzgI0wM2coX19o4Rec_UUxfh79P2JS5Z9XTEDl9l_gdOwY-h6XeikdKiYKy0OIMftbnX9_xhitnWE-DqSGr4nCePUsL94AJrTmze6C5yndc6loTa9rVRmBvd9zpKDleVjXWkOujlXN-sz3X6KOSduvZhn4HgMOAlyMfBSfG7EA2_CND7NTkSMo6G227HjovfOWI2yAZ_VCoH7OzzwaHzGN06xQTBNPqodL7KQr8lmq-yuOY2PnntJP3lrjnWuxpz1YZDnxBtr3u_VMIwGiZcw7uwNE6ytCxOYZ4fPA-yhpMZy4n1-c9L-PP7_3wQ10OIhvIcB84wwIPAHqY99j4Ubp1Nx-izLGz60R8Vfeza6n3RcOgPTwiGl28JySJSpMBifnvGouEVPZjxdErWVlAc4giGRyqD67HQT0kQhBng4l5-Z-tDNNiL8vWDVN-9KA-8KLfzaEW8KL8nexxuN7wn2mBlmnrf4_mdPbI1kbudFFMuXAHWaN9Px3BgCsF6rYky3UCHaq3Z9hcjg-kwhxzcRDloyGdHoP1iWGh0hBP6L2BB5vQov1stWzo_H9JBnj9SqPAgwCFRTBBL6YlKC3cw7ioi_mtx9-fiGsHp_PraFURAO2pfEGHJwkOyKY2CsCRvFVoIQ6tqX2RR2CF7mvviIg_NAFPKBiVdyREouxObvjLTFXU-12JqV2piJ280A5N718aYs5r-NOlwFnDPlLZuGAZTf-pvuMveP1afNbWjyohEZVZmMCZFhkiUspSQGPmwTNI0TMLMz2I_Lvz99N0NLJoB-sir-2AKJ31hXVuvupOUVfEUTojc1Ta07IrhFMMUuI92cC01f2w_ubOwqmJ0zp3A3u2rCt7VJF3YButiS-6KAz140QjZVRxR65s9eIG1Zspd8hxZLSFd3gkoxxshteEE7HRL66CA9IyeI5qhDJ-x8yAJwziDWYDOtudhFkUJSXCS-STzKU0jillBaIkL4keMnPFz6MPID4PID6MoQFMasgBnZZxAkhU4K73QZzvMq6nldSrV5szVzp0HKErC6KzCBat0V08s2ANwX7uKYnXuBFQ0G-2FfsW10c9kDDeVK0Te35jPgSvX6i78QXtdDrbc6Bd1wGeNqs4_X_XXgb8_h_8fAAD__8gf9cc">