Skip to content

[DirectX] Assert in DXILValueEnumerator predictValueUseListOrder IDPair.first && "Unmapped value" #140410

Open
@farzonl

Description

@farzonl

Repro command

lldb -- .clang-dxc /DirectML/Product/Shaders/Generated/CumulativeOperationProduct_256_int64_native_8.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/ -Fo validation/CumulativeOperationProduct_256_int64_native_8.dat

Assert location

assert(IDPair.first && "Unmapped value");

Other errors

We probably should not be getting to the bitcode writer. We should monitor this bug and see if it still reproduces after we resolve #139996 and #139173

error: Unsupported intrinsic llvm.memcpy.p0.p2.i32 for DXIL lowering
error: Cannot create BufferLoad operation: Invalid overload type
error: Cannot create BufferStore operation: Invalid overload type

Crash stack

* frame #4: 0x0000000103d030bc clang-dxc`predictValueUseListOrder(llvm::Value const*, llvm::Function const*, (anonymous namespace)::OrderMap&, std::__1::vector<llvm::UseListOrder, std::__1::allocator<llvm::UseListOrder>>&) (.cold.1) at DXILValueEnumerator.cpp:277:3 [opt]
    frame #5: 0x000000010203e52c clang-dxc`predictValueUseListOrder(V=0x000000013704fbd0, F=0x0000000137051278, OM=0x000000016fdf55e0, Stack=size=7) at DXILValueEnumerator.cpp:277:3 [opt]
    frame #6: 0x0000000102039b00 clang-dxc`llvm::dxil::ValueEnumerator::ValueEnumerator(llvm::Module const&, llvm::Type*) at DXILValueEnumerator.cpp:325:13 [opt]
    frame #7: 0x00000001020393d0 clang-dxc`llvm::dxil::ValueEnumerator::ValueEnumerator(this=0x000000016fdf5760, M=<unavailable>, PrefixType=<unavailable>) at DXILValueEnumerator.cpp:363:19 [opt]
    frame #8: 0x000000010203715c clang-dxc`llvm::dxil::DXILBitcodeWriter::DXILBitcodeWriter(this=0x000000016fdf5738, M=0x0000000137021780, Buffer=0x000000016fdf5a58, StrtabBuilder=<unavailable>, Stream=0x000000013712b1f0) at DXILBitcodeWriter.cpp:137:45 [opt]
    frame #9: 0x00000001020252b8 clang-dxc`llvm::dxil::BitcodeWriter::writeModule(llvm::Module const&) [inlined] llvm::dxil::DXILBitcodeWriter::DXILBitcodeWriter(this=0x000000016fdf5738, M=0x0000000137021780, Buffer=<unavailable>, StrtabBuilder=<unavailable>, Stream=<unavailable>) at DXILBitcodeWriter.cpp:139:49 [opt]
    frame #10: 0x00000001020252ac clang-dxc`llvm::dxil::BitcodeWriter::writeModule(this=0x000000016fdf5a70, M=0x0000000137021780) at DXILBitcodeWriter.cpp:435:21 [opt]
    frame #11: 0x0000000102025098 clang-dxc`llvm::dxil::WriteDXILToFile(M=0x0000000137021780, Out=0x000000016fdf5c10) at DXILBitcodeWriter.cpp:406:10 [opt]
    frame #12: 0x0000000102041724 clang-dxc`(anonymous namespace)::EmbedDXILPass::runOnModule(this=<unavailable>, M=0x0000000137021780) at DXILWriterPass.cpp:73:5 [opt]
    frame #13: 0x0000000100c103fc clang-dxc`llvm::legacy::PassManagerImpl::run(llvm::Module&) at LegacyPassManager.cpp:1521:27 [opt]
    frame #14: 0x0000000100c101c4 clang-dxc`llvm::legacy::PassManagerImpl::run(this=<unavailable>, M=0x0000000137021780) at LegacyPassManager.cpp:539:44 [opt]
    frame #15: 0x00000001017f8fb0 clang-dxc`clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) at BackendUtil.cpp:1262:19 [opt]
    frame #16: 0x00000001017f8d18 clang-dxc`clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) [inlined] (anonymous namespace)::EmitAssemblyHelper::emitAssembly(this=0x000000016fdf5f80, Action=<unavailable>, OS=llvm::raw_pwrite_stream @ 0x0000000137021420, BC=<unavailable>) at BackendUtil.cpp:1286:3 [opt]
    frame #17: 0x00000001017f89d4 clang-dxc`clang::emitBackendOutput(CI=0x000000013710a530, CGOpts=<unavailable>, 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=<unavailable>, Action=<unavailable>, VFS=<unavailable>, OS=<unavailable>, BC=0x0000000137021550) at BackendUtil.cpp:1451:13 [opt]
    frame #18: 0x0000000101a5a6ac clang-dxc`clang::BackendConsumer::HandleTranslationUnit(this=0x0000000137021550, C=0x000000013681ce00) at CodeGenAction.cpp:316:3 [opt]
    frame #19: 0x0000000102925f94 clang-dxc`clang::ParseAST(S=0x000000013783b800, PrintStats=<unavailable>, SkipFunctionBodies=<unavailable>) at ParseAST.cpp:184:13 [opt]
    frame #20: 0x0000000101e800fc clang-dxc`clang::FrontendAction::Execute(this=<unavailable>) at FrontendAction.cpp:1221:3 [opt]
    frame #21: 0x0000000101e1c7e8 clang-dxc`clang::CompilerInstance::ExecuteAction(this=0x000000013710a530, Act=0x000000013710aee0) at CompilerInstance.cpp:1057:33 [opt]
    frame #22: 0x0000000101ef8b64 clang-dxc`clang::ExecuteCompilerInvocation(Clang=0x000000013710a530) at ExecuteCompilerInvocation.cpp:300:25 [opt]
    frame #23: 0x0000000100009c50 clang-dxc`cc1_main(Argv=<unavailable>, Argv0=<unavailable>, MainAddr=0x00000001000054d4) at cc1_main.cpp:297:15 [opt]
    frame #24: 0x0000000100007424 clang-dxc`ExecuteCC1Tool(ArgV=<unavailable>, ToolContext=0x000000016fdfe8f8) at driver.cpp:223:12 [opt]
    frame #25: 0x0000000101ca719c 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>(long) [inlined] llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::operator()(this=<unavailable>, params=<unavailable>) const at STLFunctionalExtras.h:69:12 [opt]
    frame #26: 0x0000000101ca7190 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>(long) [inlined] 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=0x000000016fdfa100) const at Job.cpp:436:34 [opt]
    frame #27: 0x0000000101ca718c 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=6171894016) at STLFunctionalExtras.h:46:12 [opt]
    frame #28: 0x000000010136ee10 clang-dxc`llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) [inlined] llvm::function_ref<void ()>::operator()(this=<unavailable>) const at STLFunctionalExtras.h:69:12 [opt]
    frame #29: 0x000000010136ee08 clang-dxc`llvm::CrashRecoveryContext::RunSafely(this=<unavailable>, Fn=function_ref<void ()> @ 0x0000000102430ce0) at CrashRecoveryContext.cpp:427:3 [opt]
    frame #30: 0x0000000101ca6c24 clang-dxc`clang::driver::CC1Command::Execute(this=0x0000000137105330, Redirects=<unavailable>, ErrMsg=<unavailable>, ExecutionFailed=<unavailable>) const at Job.cpp:436:12 [opt]
    frame #31: 0x0000000101c7997c clang-dxc`clang::driver::Compilation::ExecuteCommand(this=0x0000000137021050, C=0x0000000137105330, FailingCommand=0x000000016fdfa648, LogOnly=false) const at Compilation.cpp:196:15 [opt]
    frame #32: 0x0000000101c79b44 clang-dxc`clang::driver::Compilation::ExecuteJobs(this=0x0000000137021050, Jobs=<unavailable>, FailingCommands=0x000000016fdfa840, LogOnly=false) const at Compilation.cpp:251:19 [opt]
    frame #33: 0x0000000101c8fb28 clang-dxc`clang::driver::Driver::ExecuteCompilation(this=0x000000016fdfa890, C=0x0000000137021050, FailingCommands=0x000000016fdfa840) at Driver.cpp:2226:5 [opt]
    frame #34: 0x00000001000069b0 clang-dxc`clang_main(Argc=<unavailable>, Argv=<unavailable>, ToolContext=0x000000016fdfe8f8) at driver.cpp:407:21 [opt]
    frame #35: 0x000000010001200c clang-dxc`main(argc=<unavailable>, argv=<unavailable>) at clang-driver.cpp:17:10 [opt]
    frame #36: 0x0000000183f4eb4c dyld`start + 6000

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    Status

    Planning

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions