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

    <tr>
        <th>Summary</th>
        <td>
            [DirectX] `createTypedBufferLoad` trys to replace a vector load with a scalar float extractValue insttruction in DXILResourceAccess.cpp
        </td>
    </tr>

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

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

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

<pre>
    if we need to replace the load and the types are different we cant use `replaceAllUsesWith`.

## Location of Assert
https://github.com/llvm/llvm-project/blob/ee4c8b556c5cf42c55ce9540bbb0e29c11894a71/llvm/lib/Target/DirectX/DXILResourceAccess.cpp#L146

## Type differences
```gdb
expr V->dump()
  %32 = extractvalue { float, i1 } %31, 0
(lldb) expr *V->getType()
(llvm::Type) $1 = {
  Context = 0x000000013f8229c0
  ID = FloatTyID
  SubclassData = 0
  NumContainedTys = 0
  ContainedTys = nullptr
}

(lldb) expr LI->dump()
  %33 = load <1 x float>, ptr %30, align 4
(lldb) expr *LI->getType()
(llvm::Type) $2 = {
 Context = 0x000000013f8229c0
  ID = FixedVectorTyID
  SubclassData = 0
 NumContainedTys = 1
  ContainedTys = 0x000000012904ad10
```

## Crash Dump
```gdb
* thread #1, queue = 'com.apple.main-thread', stop reason = instruction step into
  * frame #0: 0x0000000102054088 clang-dxc`llvm::Value::replaceAllUsesWith(this=0x0000000128850150, New=0x000000016fdf3ea8) at Value.cpp:533
    frame #1: 0x0000000100110174 clang-dxc`createTypedBufferLoad(II=0x0000000128850150, LI=0x000000012883b2d0, Offset=0x0000000000000000, RTI=0x0000000129013408) at DXILResourceAccess.cpp:146:7
    frame #2: 0x000000010010ef38 clang-dxc`createLoadIntrinsic(II=0x0000000128850150, LI=0x000000012883b2d0, Offset=0x0000000000000000, RTI=0x0000000129013408) at DXILResourceAccess.cpp:167:12
    frame #3: 0x000000010010e0a4 clang-dxc`replaceAccess(II=0x0000000128850150, RTI=0x0000000129013408) at DXILResourceAccess.cpp:224:7
    frame #4: 0x000000010010d9c8 clang-dxc`transformResourcePointers(F=0x0000000128804ac8, DRTM=0x0000000128814740) at DXILResourceAccess.cpp:249:5
    frame #5: 0x0000000100110b04 clang-dxc`(anonymous namespace)::DXILResourceAccessLegacy::runOnFunction(this=0x000000012883e150, F=0x0000000128804ac8) at DXILResourceAccess.cpp:278:12
    frame #6: 0x0000000101f5feb4 clang-dxc`llvm::FPPassManager::runOnFunction(this=0x0000000128859e70, F=0x0000000128804ac8) at LegacyPassManager.cpp:1406:27
    frame #7: 0x0000000101f66a48 clang-dxc`llvm::FPPassManager::runOnModule(this=0x0000000128859e70, M=0x000000012ee0d2e0) at LegacyPassManager.cpp:1452:16
    frame #8: 0x0000000101f60774 clang-dxc`(anonymous namespace)::MPPassManager::runOnModule(this=0x000000012880e360, M=0x000000012ee0d2e0) at LegacyPassManager.cpp:1521:27
    frame #9: 0x0000000101f602e8 clang-dxc`llvm::legacy::PassManagerImpl::run(this=0x0000000129010600, M=0x000000012ee0d2e0) at LegacyPassManager.cpp:539:44
    frame #10: 0x0000000101f66e50 clang-dxc`llvm::legacy::PassManager::run(this=0x000000016fdf47e8, M=0x000000012ee0d2e0) at LegacyPassManager.cpp:1648:14
    frame #11: 0x0000000103b41860 clang-dxc`(anonymous namespace)::EmitAssemblyHelper::RunCodegenPipeline(this=0x000000016fdf4c60, Action=Backend_EmitAssembly, OS=llvm::raw_pwrite_stream @ 0x000000012ee0cfb0, DwoOS=nullptr) at BackendUtil.cpp:1244:19
    frame #12: 0x0000000103b32000 clang-dxc`(anonymous namespace)::EmitAssemblyHelper::emitAssembly(this=0x000000016fdf4c60, Action=Backend_EmitAssembly, OS=llvm::raw_pwrite_stream @ 0x000000012ee0cfb0, BC=0x000000012ee0d160) at BackendUtil.cpp:1268:3
    frame #13: 0x0000000103b3151c clang-dxc`clang::emitBackendOutput(CI=0x000000013f8235b0, CGOpts=0x000000014002be18, TDesc=(Data = "e-m:e-p:32:32-i1:32-i8:8-i16:16-i32:32-i64:64-f16:16-f32:32-f64:64-n8:16:32:64", Length = 78), M=0x000000012ee0d2e0, Action=Backend_EmitAssembly, VFS=IntrusiveRefCntPtr<llvm::vfs::FileSystem> @ 0x000000016fdf4f68, OS=nullptr, BC=0x000000012ee0d160) at BackendUtil.cpp:1433:13
    frame #14: 0x00000001042aac7c clang-dxc`clang::BackendConsumer::HandleTranslationUnit(this=0x000000012ee0d160, C=0x000000012f01c600) at CodeGenAction.cpp:316:3
    frame #15: 0x0000000106aca0b8 clang-dxc`clang::ParseAST(S=0x000000012f03d800, PrintStats=false, SkipFunctionBodies=false) at ParseAST.cpp:184:13
    frame #16: 0x0000000104e2175c clang-dxc`clang::ASTFrontendAction::ExecuteAction(this=0x000000013f829060) at FrontendAction.cpp:1345:3
    frame #17: 0x00000001042b06f0 clang-dxc`clang::CodeGenAction::ExecuteAction(this=0x000000013f829060) at CodeGenAction.cpp:1111:30
    frame #18: 0x0000000104e20fd4 clang-dxc`clang::FrontendAction::Execute(this=0x000000013f829060) at FrontendAction.cpp:1227:3
    frame #19: 0x0000000104d3ac18 clang-dxc`clang::CompilerInstance::ExecuteAction(this=0x000000013f8235b0, Act=0x000000013f829060) at CompilerInstance.cpp:1056:33
    frame #20: 0x0000000104f5dbf4 clang-dxc`clang::ExecuteCompilerInvocation(Clang=0x000000013f8235b0) at ExecuteCompilerInvocation.cpp:300:25
    frame #21: 0x0000000100014a60 clang-dxc`cc1_main(Argv=ArrayRef<const char *> @ 0x000000016fdf5ea8, Argv0="/Users/farzonlotfi/Projects/llvm_debug_build/bin/clang-20", MainAddr=0x0000000100004980) at cc1_main.cpp:294:15
    frame #22: 0x0000000100006328 clang-dxc`ExecuteCC1Tool(ArgV=0x000000016fdf9698, ToolContext=0x000000016fdfe648) at driver.cpp:218:12
    frame #23: 0x00000001000133dc clang-dxc`clang_main(int, char**, llvm::ToolContext const&)::$_0::operator()(this=0x000000016fdfa1d8, ArgV=0x000000016fdf9698) const at driver.cpp:364:16
    frame #24: 0x00000001000133ac clang-dxc`int llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::callback_fn<clang_main(int, char**, llvm::ToolContext const&)::$_0>(callable=6171894232, params=0x000000016fdf9698) at STLFunctionalExtras.h:46:12
    frame #25: 0x0000000104a43890 clang-dxc`llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::operator()(this=0x000000016fdfa860, params=0x000000016fdf9698) const at STLFunctionalExtras.h:69:12
    frame #26: 0x0000000104a43850 clang-dxc`clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const::$_0::operator()(this=0x000000016fdf95f8) const at Job.cpp:435:34
 frame #27: 0x0000000104a4381c clang-dxc`void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const::$_0>(callable=6171891192) at STLFunctionalExtras.h:46:12
    frame #28: 0x00000001011764b4 clang-dxc`llvm::function_ref<void ()>::operator()(this=0x000000016fdf9598) const at STLFunctionalExtras.h:69:12
    frame #29: 0x00000001030a683c clang-dxc`llvm::CrashRecoveryContext::RunSafely(this=0x000000016fdf9638, Fn=function_ref<void ()> @ 0x000000016fdf9598) at CrashRecoveryContext.cpp:426:3
    frame #30: 0x0000000104a3fd40 clang-dxc`clang::driver::CC1Command::Execute(this=0x000000013f823800, Redirects=ArrayRef<std::__1::optional<llvm::StringRef> > @ 0x000000016fdf9680, ErrMsg="", ExecutionFailed=0x000000016fdf9b8f) const at Job.cpp:435:12
    frame #31: 0x00000001049d5754 clang-dxc`clang::driver::Compilation::ExecuteCommand(this=0x000000013f822320, C=0x000000013f823800, FailingCommand=0x000000016fdf9ca8, LogOnly=false) const at Compilation.cpp:196:15
    frame #32: 0x00000001049d59e0 clang-dxc`clang::driver::Compilation::ExecuteJobs(this=0x000000013f822320, Jobs=0x000000013f8223a0, FailingCommands=0x000000016fdfa538, LogOnly=false) const at Compilation.cpp:251:19
    frame #33: 0x00000001049f3f5c clang-dxc`clang::driver::Driver::ExecuteCompilation(this=0x000000016fdfa588, C=0x000000013f822320, FailingCommands=0x000000016fdfa538) at Driver.cpp:2220:5
    frame #34: 0x0000000100005aa4 clang-dxc`clang_main(Argc=15, Argv=0x000000016fdfed88, ToolContext=0x000000016fdfe648) at driver.cpp:402:21
    frame #35: 0x00000001000401c0 clang-dxc`main(argc=15, argv=0x000000016fdfed88) at clang-driver.cpp:17:10
    frame #36: 0x0000000185c86b4c dyld`start + 6000
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWltT4zgW_jXiRQWlm28PPISEzDBFT1NA984bJcty0I4jZyWFhv31W5LtEN-AZqZq92G7qCZEsvSd7xydm8WtVRst5TmILkC0OuF791ib85Kbf9e6Osnr4uVclfCHhFrKAroaGrmruJDQPUpY1byAXBfhD_eykxZyI2GhylIaqZ1_TnDt4N5KCGLUPruoqm9W2n8o9whidAbQwv8QCgiF17XgTtUa1iVcWCuNA2jx6NzOAroAZA3IeqPc4z4_E_UWkHVVPXW_Tnem_qcUDpB1XtU5IGspmUjzKIpFJEpGRBQJmUUM5XmOJMkExmnGeIKP1lH-uXtuNtKvs1JGCveH__TH1fWttPXeCLkQQlp7JnY7QOg1ZnFPgvuX3SsFQlo_EqPmZ1PkAC3k887A76eAXhb77Q6QFJAMoAWEgESUQEBXUD47w4V74tVeQpBcwLKquQNkCRWGIFmFqdj_jcLOaVUVOSAZDGsDsgjLb6TzaA47hHlPW88kXTQjGQSE4bAnSC4CimWtnXx24Tv0jJp_mJYpIZlAYcrVKoyuPaj7l6tV-PJun4uKW7vijjcPh69_32_9ilxpWdy_2KOR0dd6X1U7ZzzSZNWR2hft-mqGNxpWCBYJ6BLD55YyeulZ2jkTZiH_B6_URkM2TVyzwUeZI8fM_QRx6lkW36VwtXmHvin28DR7r1uSDDFeYHRsej0bXRpuH-HKsziyTkAW0D0a6YkkjY39ay-9GXpJSSLq7Rnf7Sp5tuVKnzZTAUn8ROvqHTSS21qH6UpbZ_YiHGjr5A4q7epWZQtYGr6VfhME6OIIPiIoYihNoai43pwWzwLE6JX-7_5QNB8nHApJ3aOygK6O6EjTCOEo6P53-aM3FpdFSSX3aobcwbB2ONl0EVEaoMJXoHgAFGGMcMJ6QIWR3ElvI8XF3nuB69rzk15dzYK6Hg3RnBRh6GtZWumOhw___PDt_eDRDGHKUCfOjNeiC--06CIZykdG8iFZ0nRCPi_UlXZGaavE_5x0ceL_J0Px6IR4iPfV15lUWO9twT4LjxA2RT4boysy0SffGa5tWZttt_BNrbSTxiNdD4EixkXqga5u778MBzFLGHoXKcv8QRgijSaOQY76PAKScl3rl229t1DzrbQ7LrzbbE7ueMtrueHipT3Xe_1Vr_c6eI6ZI01lq4Y5ud8RLUknbSQeyIbLqJQ5m_FF65sbbu0XrvlGmo9jjzKZvI-9YeRog8PhRXGQYIg9GWGPY87m_Ogc9i91sa_ke8gHBiUlKohE7yKPSDifQ-TpGDlKkp-yqC-fEQdJGv8FcSKCJxWRTYhD5JwiqiPLP9rkarurDnJM4s8QRjH6PP4oAGVsFOaGAdkbkozQz-F_E7uPuyyR6ee5j1k4wGPwwyBNc4bTGP2MLV1ulfPVxzavXn6V1a4T5navl3UhN1LfqJ2slJ60qyCbaOxq0bgBurrg4k-pi4fjpUMIvAN09cql4T8edj-McvLBOiP5FgKGYJ8dUeZh7dWPOjzdpc0NYe1G35yqOqoI87EFZyOqhvGe5pQg9LdQJXty_vdIuliOrQvH6A2yYm9X49RvmDzQnOIIi35u5D-_yt-u_nXvdnsHSLrs5wu-MqBRA3P5y9ed6zPEECK5xOGI3K-kFYCuAEkP9QEgRJ56RuSpBx6SN0pOFW5_ezHSU4XjcFpO1WFC7K0hZqdlN1R2Q2U3pNPGTbfLxgwQEnI5qTfuMWyfhNLojeP7Ab1-X3vF-jxyb9WTvJXlUrsbZwBdvmr7qbRtwFKVvHuxTm4BvRyoPJhTGacHazkcik-YAAuZIh7bwDBFY4RzkczaQLv0stZ2v-0Oxq9cF5W894lcFVod37Ryk-79gHMJBxKUCIvg-IME3iX9InXDdisDbZQ3kmCYusVccJSncxLccGPl4u4ekPRuCIEWaRN7bozS7s7xYL8lr6z03979qXZdGnRRF0oejQbY3dod6ymbJn2YkTFJcBLNkr64u18bX4nrorO_4Keepdg7uZhNy_xpzNDBLPprdBgpiyZpHWZejOQoLtEcxp7GPodvSukYh-BH0QjfML9ikqCyYHP43iDw09QRkkxSN8yVWEG5wLMWuay3O1VJc6Wt41rIn2Cv87UL4d5mtr9DJwCKwpEaSUCG2RIroyIvZ8ltsb5u89T2PH2EaKZNAg_gZh_uzj3yaMioZCOj1gXCjA-yIiHww5YrD2RhNk-ArhbG8JdbWQK6FLW2DopHHtpk0x44Cp2UJfRPoxCuCCDrbzYUqOu2q1y7UgGyvmm6tbZtvj4UMt9vHvK9qgpA1rlHsW7AEdRGny9c6UVRmB5B_j-WpR1BnQxdmZcFrzLmY9TqQCimpG92HdlLfF_XVcPK91EWk8VZE6PrumpbgKM50merDcDCqKdDFkvwdBVKRq0KhCktJpxepzClQ3vY68erx_8s4VHP8hUcDJoEJD7kcICwB9R8rHfScFebtvM5k7hxXHR6nuMja7YZSUxDijGuAMmo_eEl5n2JlXZHMpVtdHkwwUD9YK9Pe7flVdV0WZtaahmstxV_EVrDDQmXzQOCV1XOxZ8PpfaT_2Z6LwFJ_Q48rySgqxgnOM0YocG0d9zw7Zjojkvu4N39dRdOeXX57Ay3Z4--fIunLWgY6RlnNM3mari_ncsPGlLa5DfviH8wpTkS4myahFHu4EmIZuNyY6ltoFniZb3dcl0M498rK0fu0bp23sMD7hhoYPaS2TtnlN6ERy7bdxPjJ3NulfCljfLAlo3RTU30Iw_OcOVTr2be3Jq8qnykqM3RRD83GHIe3NviQPUn3UIWlX11_Vbn7bFnoWlIQ7X-qp5R2uTVM6ipnmpVzB_6MNqieuMY_1-9s-qddEsYZ-STfmfUysNJzGYbqB9Q50dt7y-6imEeShGPUypmcIc3aLdS1E_SvByiftsjuuOlnO96ZDENwXPtK-M35Z_IsDoxfZ46AaE7bWSy-hu9aGOclgX7i-5wOtdua8NbWYR36LafTH7iOMEZQuI0bHRpzBe76XLOEFMbiKrWa64qWYwVkaflm-5q4g3SMI1mWREl0Wyu32Mw5Ox8VFF1tM4wGQqMUQvgmGMvntKbg3qGYoomKb-uN1919XJchR8kP8LWlTtZPJk4j94RegYy-TEbmmHgtzq374kf5owH-QQDE2lGRD9BAYnwZNt09B6RZSUt5zsSxxSsjj73ajk-V7k2-NN02gY6ej7GQPNKrFeAkFC-jtU8TsdRxPmEoR9VjALQFY66AnBcBBXppwslhkgol0Y4R-8iEUNY9M2xRciPEfJ5hE0d2Tx_jCF0efCouTJ8ZZhGIo1zJmDxUhUgRtZx47PpCxgj1LuTcVKc0yKjGT-R5zhhEWIMY3TyeB5nKWEZxknCeRHhiFERFWmZFlIkZR6RE3VOEIkQwxmKSUrRWRTnRR7hnJSIZAiVgCG55ao68870rDabE2XtXp5jGjOUnVQ8l5UNt74I0fIHDKPeb0arE3MerlPl-40FDFXKOvu6jFOuCtfFurtR0QrO3nqIEXTmxR7fG-PwKVQRzVWdH8o9Qg6t4BU3zY2d7u5TuIoRbpAcrpAoPfM-92RvqvOfviUWZLaArFtSns7JfwIAAP__IisvjA">