Issue |
136409
|
Summary |
[DirectX] `createTypedBufferLoad` trys to replace a vector load with a scalar float extractValue insttruction in DXILResourceAccess.cpp
|
Labels |
new issue
|
Assignees |
|
Reporter |
farzonl
|
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="" 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="" 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 = "" Length = 78), M=0x000000012ee0d2e0, Action="" 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
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs