Issue |
138046
|
Summary |
[DirectX] Unhandled instruction - pointer escaped? UNREACHABLE executed DXILResourceAccess.cpp:235
|
Labels |
backend:DirectX
|
Assignees |
|
Reporter |
farzonl
|
## Run line
```bash
./../DirectML/Product/Shaders/Generated/GemmWaveSM_6_0_float_32.hlsl" "-E" "CSMain" "-T" "cs_6_0" "-O3" "-D" "DXC_COMPILER=1" "-D" "__SHADER_TARGET_MAJOR=6" "-D" "__SHADER_TARGET_MINOR=0" "-I" "../../DirectML/Product/Shaders/
```
## IR causing crash
```llvm
%17 = tail call noundef nonnull align 4 dereferenceable(4) ptr @llvm.dx.resource.getpointer.p0.tdx.RawBuffer_f32_1_0t(target("dx.RawBuffer", float, 1, 0) %10, i32 %elt.min14)
```
## IR with more context
```llvm
if.then: ; preds = %entry
%Parameters.cb82 = load target("dx.CBuffer", target("dx.Layout", %__cblayout_Parameters, 112, 0, 8, 16, 24, 32, 36, 40, 44, 48, 52, 56, 64, 72, 80, 88, 96, 100, 104, 108)), ptr @Parameters.cb, align 4
%8 = call { i32, i32, i32, i32 } @llvm.dx.resource.load.cbufferrow.4.i32.i32.i32.i32.tdx.CBuffer_tdx.Layout_s___cblayout_Parameterss_112_0_8_16_24_32_36_40_44_48_52_56_64_72_80_88_96_100_104_108tt(target("dx.CBuffer", target("dx.Layout", %__cblayout_Parameters, 112, 0, 8, 16, 24, 32, 36, 40, 44, 48, 52, 56, 64, 72, 80, 88, 96, 100, 104, 108)) %Parameters.cb82, i32 6)
%9 = extractvalue { i32, i32, i32, i32 } %8, 2
%elt.min = tail call i32 @llvm.umin.i32(i32 %add2, i32 %9)
%10 = load target("dx.RawBuffer", float, 1, 0), ptr @_ZL4matA.0, align 4, !tbaa !5
%11 = call { <1 x float>, i1 } @llvm.dx.resource.load.rawbuffer.v1f32.tdx.RawBuffer_f32_1_0t(target("dx.RawBuffer", float, 1, 0) %10, i32 %elt.min, i32 0)
%12 = extractvalue { <1 x float>, i1 } %11, 0
%vecins = shufflevector <1 x float> %12, <1 x float> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>
%add5 = add i32 %add2, %3
%elt.min6 = tail call i32 @llvm.umin.i32(i32 %add5, i32 %9)
%13 = call { float, i1 } @llvm.dx.resource.load.rawbuffer.f32.tdx.RawBuffer_f32_1_0t(target("dx.RawBuffer", float, 1, 0) %10, i32 %elt.min6, i32 0)
%14 = extractvalue { float, i1 } %13, 0
%vecins8 = insertelement <4 x float> %vecins, float %14, i64 1
%add9 = add i32 %add5, %3
%elt.min10 = tail call i32 @llvm.umin.i32(i32 %add9, i32 %9)
%15 = call { float, i1 } @llvm.dx.resource.load.rawbuffer.f32.tdx.RawBuffer_f32_1_0t(target("dx.RawBuffer", float, 1, 0) %10, i32 %elt.min10, i32 0)
%16 = extractvalue { float, i1 } %15, 0
%vecins12 = insertelement <4 x float> %vecins8, float %16, i64 2
%add13 = add i32 %add9, %3
%elt.min14 = tail call i32 @llvm.umin.i32(i32 %add13, i32 %9)
%17 = tail call noundef nonnull align 4 dereferenceable(4) ptr @llvm.dx.resource.getpointer.p0.tdx.RawBuffer_f32_1_0t(target("dx.RawBuffer", float, 1, 0) %10, i32 %elt.min14)
br label %if.end49.sink.split
```
## Crash stack
```gdb
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
* frame #0: 0x00000001842b4388 libsystem_kernel.dylib`__pthread_kill + 8
frame #1: 0x00000001842ed88c libsystem_pthread.dylib`pthread_kill + 296
frame #2: 0x00000001841f6c60 libsystem_c.dylib`abort + 124
frame #3: 0x00000001030d8b14 clang-dxc`llvm::llvm_unreachable_internal(msg="Unhandled instruction - pointer escaped?", file="/Users/farzonlotfi/Projects/llvm-project/llvm/lib/Target/DirectX/DXILResourceAccess.cpp", line=235) at ErrorHandling.cpp:214:3
frame #4: 0x0000000100110af0 clang-dxc`replaceAccess(II=0x0000000127051240, RTI=0x000000011c556730) at DXILResourceAccess.cpp:235:7
frame #5: 0x0000000100110468 clang-dxc`transformResourcePointers(F=0x0000000126678d18, DRTM=0x000000011c5100d0) at DXILResourceAccess.cpp:256:5
frame #6: 0x00000001001133f0 clang-dxc`(anonymous namespace)::DXILResourceAccessLegacy::runOnFunction(this=0x000000011c510090, F=0x0000000126678d18) at DXILResourceAccess.cpp:285:12
frame #7: 0x0000000101f65b00 clang-dxc`llvm::FPPassManager::runOnFunction(this=0x000000011c53b890, F=0x0000000126678d18) at LegacyPassManager.cpp:1406:27
frame #8: 0x0000000101f6c694 clang-dxc`llvm::FPPassManager::runOnModule(this=0x000000011c53b890, M=0x000000012660f490) at LegacyPassManager.cpp:1452:16
frame #9: 0x0000000101f663c0 clang-dxc`(anonymous namespace)::MPPassManager::runOnModule(this=0x000000011c5130a0, M=0x000000012660f490) at LegacyPassManager.cpp:1521:27
frame #10: 0x0000000101f65f34 clang-dxc`llvm::legacy::PassManagerImpl::run(this=0x000000011d05ee00, M=0x000000012660f490) at LegacyPassManager.cpp:539:44
frame #11: 0x0000000101f6ca9c clang-dxc`llvm::legacy::PassManager::run(this=0x000000016fdf48f8, M=0x000000012660f490) at LegacyPassManager.cpp:1648:14
frame #12: 0x0000000103b63834 clang-dxc`(anonymous namespace)::EmitAssemblyHelper::RunCodegenPipeline(this=0x000000016fdf4d70, Action="" OS=llvm::raw_pwrite_stream @ 0x000000012660f160, DwoOS=nullptr) at BackendUtil.cpp:1261:19
frame #13: 0x0000000103b53e64 clang-dxc`(anonymous namespace)::EmitAssemblyHelper::emitAssembly(this=0x000000016fdf4d70, Action="" OS=llvm::raw_pwrite_stream @ 0x000000012660f160, BC=0x000000012660f310) at BackendUtil.cpp:1285:3
frame #14: 0x0000000103b53380 clang-dxc`clang::emitBackendOutput(CI=0x0000000127023690, CGOpts=0x000000012782be18, TDesc=(Data = "" Length = 78), M=0x000000012660f490, Action="" VFS=IntrusiveRefCntPtr<llvm::vfs::FileSystem> @ 0x000000016fdf5078, OS=nullptr, BC=0x000000012660f310) at BackendUtil.cpp:1450:13
frame #15: 0x00000001042d0120 clang-dxc`clang::BackendConsumer::HandleTranslationUnit(this=0x000000012660f310, C=0x000000012681cc00) at CodeGenAction.cpp:316:3
frame #16: 0x0000000106b07f30 clang-dxc`clang::ParseAST(S=0x000000012683de00, PrintStats=false, SkipFunctionBodies=false) at ParseAST.cpp:184:13
frame #17: 0x0000000104e4c3d8 clang-dxc`clang::ASTFrontendAction::ExecuteAction(this=0x0000000127026d80) at FrontendAction.cpp:1343:3
frame #18: 0x00000001042d5b94 clang-dxc`clang::CodeGenAction::ExecuteAction(this=0x0000000127026d80) at CodeGenAction.cpp:1111:30
frame #19: 0x0000000104e4bc50 clang-dxc`clang::FrontendAction::Execute(this=0x0000000127026d80) at FrontendAction.cpp:1225:3
frame #20: 0x0000000104d6244c clang-dxc`clang::CompilerInstance::ExecuteAction(this=0x0000000127023690, Act=0x0000000127026d80) at CompilerInstance.cpp:1058:33
frame #21: 0x0000000104f8e5c8 clang-dxc`clang::ExecuteCompilerInvocation(Clang=0x0000000127023690) at ExecuteCompilerInvocation.cpp:300:25
frame #22: 0x00000001000131c0 clang-dxc`cc1_main(Argv=ArrayRef<const char *> @ 0x000000016fdf5fc8, Argv0="/Users/farzonlotfi/Projects/llvm_debug_build/bin/clang-20", MainAddr=0x0000000100002fd0) at cc1_main.cpp:294:15
frame #23: 0x0000000100004978 clang-dxc`ExecuteCC1Tool(ArgV=0x000000016fdf97b8, ToolContext=0x000000016fdfe768) at driver.cpp:223:12
frame #24: 0x0000000100011b38 clang-dxc`clang_main(int, char**, llvm::ToolContext const&)::$_0::operator()(this=0x000000016fdfa2f8, ArgV=0x000000016fdf97b8) const at driver.cpp:369:16
frame #25: 0x0000000100011b08 clang-dxc`int llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::callback_fn<clang_main(int, char**, llvm::ToolContext const&)::$_0>(callable=6171894520, params=0x000000016fdf97b8) at STLFunctionalExtras.h:46:12
frame #26: 0x0000000104a6a7a0 clang-dxc`llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::operator()(this=0x000000016fdfa980, params=0x000000016fdf97b8) const at STLFunctionalExtras.h:69:12
frame #27: 0x0000000104a6a760 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=0x000000016fdf9718) const at Job.cpp:435:34
frame #28: 0x0000000104a6a72c 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=6171891480) at STLFunctionalExtras.h:46:12
frame #29: 0x00000001011724c4 clang-dxc`llvm::function_ref<void ()>::operator()(this=0x000000016fdf96b8) const at STLFunctionalExtras.h:69:12
frame #30: 0x00000001030c2bf0 clang-dxc`llvm::CrashRecoveryContext::RunSafely(this=0x000000016fdf9758, Fn=function_ref<void ()> @ 0x000000016fdf96b8) at CrashRecoveryContext.cpp:426:3
frame #31: 0x0000000104a66c50 clang-dxc`clang::driver::CC1Command::Execute(this=0x00000001270238e0, Redirects=ArrayRef<std::__1::optional<llvm::StringRef> > @ 0x000000016fdf97a0, ErrMsg="", ExecutionFailed=0x000000016fdf9caf) const at Job.cpp:435:12
frame #32: 0x00000001049fc55c clang-dxc`clang::driver::Compilation::ExecuteCommand(this=0x0000000127022430, C=0x00000001270238e0, FailingCommand=0x000000016fdf9dc8, LogOnly=false) const at Compilation.cpp:196:15
frame #33: 0x00000001049fc7e8 clang-dxc`clang::driver::Compilation::ExecuteJobs(this=0x0000000127022430, Jobs=0x00000001270224b0, FailingCommands=0x000000016fdfa658, LogOnly=false) const at Compilation.cpp:251:19
frame #34: 0x0000000104a1ae2c clang-dxc`clang::driver::Driver::ExecuteCompilation(this=0x000000016fdfa6a8, C=0x0000000127022430, FailingCommands=0x000000016fdfa658) at Driver.cpp:2225:5
frame #35: 0x00000001000040f4 clang-dxc`clang_main(Argc=15, Argv=0x000000016fdfeea8, ToolContext=0x000000016fdfe768) at driver.cpp:407:21
frame #36: 0x000000010003e94c clang-dxc`main(argc=15, argv=0x000000016fdfeea8) at clang-driver.cpp:17:10
frame #37: 0x0000000183f4eb4c dyld`start + 6000
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs