Open
Description
Assert
Assertion failed: (isa<To>(Val) && "cast<Ty>() argument of incompatible type!"), function cast, file Casting.h, line 578.
Process 34770 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = hit program assert
frame #4: 0x0000000100102b54 clang-dxc`decltype(auto) llvm::cast<llvm::CallInst, llvm::Value>(Val=0x000000012f71f8f0) at Casting.h:578:3
575
576 template <typename To, typename From>
577 [[nodiscard]] inline decltype(auto) cast(From *Val) {
-> 578 assert(isa<To>(Val) && "cast<Ty>() argument of incompatible type!");
579 return CastInfo<To, From *>::doCast(Val);
580 }
581
(lldb) expr *Val->getType()
(llvm::Type) $3 = {
Context = 0x000000012f625040
ID = TargetExtTyID
SubclassData = 2
NumContainedTys = 1
ContainedTys = 0x000000012901bd48
}
From by looking one frame up
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
frame #0: 0x00000001000fa640 clang-dxc`(anonymous namespace)::OpLowerer::cleanupHandleCasts(this=0x000000016fdf43d0) at DXILOpLowering.cpp:175:38
172 }
173 // Otherwise, we're the second handle in a pair. Forward the arguments and
174 // remove the (second) cast.
-> 175 CallInst *Def = cast<CallInst>(Cast->getOperand(0));
176 assert(Def->getIntrinsicID() == Intrinsic::dx_resource_casthandle &&
177 "Unbalanced pair of temporary handle casts");
178 Cast->replaceAllUsesWith(Def->getOperand(0));
IR causing assert
%agg.tmp.i1.sroa.0.0.agg.tmp.i1.sroa.0.0.agg.tmp.i1.sroa.0.0.agg.tmp.i1.sroa.0.0.5 = load target("dx.RawBuffer", i32, 1, 0), ptr %agg.tmp.i1.sroa.0, align 8, !tbaa !24
IR Context
if.end.i: ; preds = %if.then.i
%14 = call %dx.types.ResRet.f16 @dx.op.rawBufferLoad.f16(i32 139, %dx.types.Handle %_ZL11inputBuffer_h.i.i12, i32 %add.i, i32 0, i8 1, i32 2)
%15 = extractvalue %dx.types.ResRet.f16 %14, 0
%conv.i = fpext reassoc nnan ninf nsz arcp afn half %15 to float
%16 = call %dx.types.ResRet.f16 @dx.op.rawBufferLoad.f16(i32 139, %dx.types.Handle %_ZL14inputMinBuffer_h.i.i11, i32 0, i32 0, i8 1, i32 2)
%17 = extractvalue %dx.types.ResRet.f16 %16, 0
%conv4.i = fpext reassoc nnan ninf nsz arcp afn half %17 to float
%18 = call %dx.types.ResRet.f16 @dx.op.rawBufferLoad.f16(i32 139, %dx.types.Handle %_ZL14inputMaxBuffer_h.i.i10, i32 0, i32 0, i8 1, i32 2)
%19 = extractvalue %dx.types.ResRet.f16 %18, 0
%conv6.i = fpext reassoc nnan ninf nsz arcp afn half %19 to float
%elt.min.i19 = call float @dx.op.binary.f32(i32 36, float %conv4.i, float 0.000000e+00) #4
%elt.max.i22 = call float @dx.op.binary.f32(i32 35, float %conv6.i, float 0.000000e+00) #4
%sub.i = fsub reassoc nnan ninf nsz arcp afn float %elt.max.i22, %elt.min.i19
%div9.i = fdiv reassoc nnan ninf nsz arcp afn float 0x406FDFFFE0000000, %sub.i
%neg.i = fneg reassoc nnan ninf nsz arcp afn float %elt.min.i19
%20 = call float @dx.op.tertiary.f32(i32 46, float %neg.i, float %div9.i, float -1.280000e+02) #4
%dx.max620 = call float @dx.op.binary.f32(i32 35, float %20, float -1.280000e+02) #4
%dx.min717 = call float @dx.op.binary.f32(i32 36, float %dx.max620, float 1.270000e+02) #4
%elt.roundeven.i24 = call float @dx.op.unary.f32(i32 26, float %dx.min717) #4
%mul.i = fmul reassoc nnan ninf nsz arcp afn float %div9.i, %conv.i
%elt.roundeven13.i23 = call float @dx.op.unary.f32(i32 26, float %mul.i) #4
%add14.i = fadd reassoc nnan ninf nsz arcp afn float %elt.roundeven13.i23, %elt.roundeven.i24
%dx.max21 = call float @dx.op.binary.f32(i32 35, float %add14.i, float -1.280000e+02) #4
%dx.min18 = call float @dx.op.binary.f32(i32 36, float %dx.max21, float 1.270000e+02) #4
%conv18.i = fptosi float %dx.min18 to i32
%21 = load i32, ptr @_ZL12outputBuffer, align 4, !tbaa !21
call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %agg.tmp.i1.sroa.0)
store i32 %21, ptr %agg.tmp.i1.sroa.0, align 8
%div9.i2 = lshr i32 %add.i, 2
%rem.i3 = shl i32 %add.i, 3
%mul.i4 = and i32 %rem.i3, 24
%shl.i = shl nuw i32 255, %mul.i4
%agg.tmp.i1.sroa.0.0.agg.tmp.i1.sroa.0.0.agg.tmp.i1.sroa.0.0.agg.tmp.i1.sroa.0.0.5 = load target("dx.RawBuffer", i32, 1, 0), ptr %agg.tmp.i1.sroa.0, align 8, !tbaa !24
%22 = call %dx.types.Handle @llvm.dx.resource.casthandle.s_dx.types.Handles.tdx.RawBuffer_i32_1_0t(target("dx.RawBuffer", i32, 1, 0) %agg.tmp.i1.sroa.0.0.agg.tmp.i1.sroa.0.0.agg.tmp.i1.sroa.0.0.agg.tmp.i1.sroa.0.0.5)
%23 = call %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32 139, %dx.types.Handle %22, i32 %div9.i2, i32 0, i8 1, i32 4)
%24 = extractvalue %dx.types.ResRet.i32 %23, 0
%shl2.i = shl i32 %conv18.i, %mul.i4
%xor.i = xor i32 %24, %shl2.i
%and.i = and i32 %xor.i, %shl.i
%xor3.i = xor i32 %and.i, %24
%25 = call %dx.types.Handle @llvm.dx.resource.casthandle.s_dx.types.Handles.tdx.RawBuffer_i32_1_0t(target("dx.RawBuffer", i32, 1, 0) %agg.tmp.i1.sroa.0.0.agg.tmp.i1.sroa.0.0.agg.tmp.i1.sroa.0.0.agg.tmp.i1.sroa.0.0.5)
call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %25, i32 %div9.i2, i32 0, i32 %xor3.i, i32 undef, i32 undef, i32 undef, i8 1, i32 4)
call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %agg.tmp.i1.sroa.0)
%cmp19.i = icmp eq i32 %add.i, 0
br i1 %cmp19.i, label %if.then20.i, label %_Z6CSMainDv3_j.exit, !dx.controlflow.hints !26
Stack trace
* thread #1, queue = 'com.apple.main-thread', stop reason = hit program assert
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: 0x00000001841f5eec libsystem_c.dylib`__assert_rtn + 284
* frame #4: 0x0000000100102b54 clang-dxc`decltype(auto) llvm::cast<llvm::CallInst, llvm::Value>(Val=0x000000012f71f8f0) at Casting.h:578:3
frame #5: 0x00000001000fa650 clang-dxc`(anonymous namespace)::OpLowerer::cleanupHandleCasts(this=0x000000016fdf43d0) at DXILOpLowering.cpp:175:23
frame #6: 0x00000001000f9a8c clang-dxc`(anonymous namespace)::OpLowerer::lowerIntrinsics(this=0x000000016fdf43d0) at DXILOpLowering.cpp:806:7
frame #7: 0x0000000100103d44 clang-dxc`(anonymous namespace)::DXILOpLoweringLegacy::runOnModule(this=0x000000012f71d8e0, M=0x000000012f70e060) at DXILOpLowering.cpp:836:36
frame #8: 0x0000000101f643b0 clang-dxc`(anonymous namespace)::MPPassManager::runOnModule(this=0x000000012f725150, M=0x000000012f70e060) at LegacyPassManager.cpp:1521:27
frame #9: 0x0000000101f63f24 clang-dxc`llvm::legacy::PassManagerImpl::run(this=0x0000000138097a00, M=0x000000012f70e060) at LegacyPassManager.cpp:539:44
frame #10: 0x0000000101f6aa8c clang-dxc`llvm::legacy::PassManager::run(this=0x000000016fdf48c8, M=0x000000012f70e060) at LegacyPassManager.cpp:1648:14
frame #11: 0x0000000103b5eea0 clang-dxc`(anonymous namespace)::EmitAssemblyHelper::RunCodegenPipeline(this=0x000000016fdf4d40, Action=Backend_EmitAssembly, OS=llvm::raw_pwrite_stream @ 0x000000012f70dce0, DwoOS=nullptr) at BackendUtil.cpp:1244:19
frame #12: 0x0000000103b4f66c clang-dxc`(anonymous namespace)::EmitAssemblyHelper::emitAssembly(this=0x000000016fdf4d40, Action=Backend_EmitAssembly, OS=llvm::raw_pwrite_stream @ 0x000000012f70dce0, BC=0x000000012f70dee0) at BackendUtil.cpp:1268:3
frame #13: 0x0000000103b4eb88 clang-dxc`clang::emitBackendOutput(CI=0x000000012f624e30, CGOpts=0x000000012f82c418, 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=0x000000012f70e060, Action=Backend_EmitAssembly, VFS=IntrusiveRefCntPtr<llvm::vfs::FileSystem> @ 0x000000016fdf5048, OS=nullptr, BC=0x000000012f70dee0) at BackendUtil.cpp:1433:13
frame #14: 0x00000001042ca204 clang-dxc`clang::BackendConsumer::HandleTranslationUnit(this=0x000000012f70dee0, C=0x000000013801c600) at CodeGenAction.cpp:316:3
frame #15: 0x0000000106af43cc clang-dxc`clang::ParseAST(S=0x000000013803d800, PrintStats=false, SkipFunctionBodies=false) at ParseAST.cpp:184:13
frame #16: 0x0000000104e43de8 clang-dxc`clang::ASTFrontendAction::ExecuteAction(this=0x000000012f62aaa0) at FrontendAction.cpp:1343:3
frame #17: 0x00000001042cfc78 clang-dxc`clang::CodeGenAction::ExecuteAction(this=0x000000012f62aaa0) at CodeGenAction.cpp:1111:30
frame #18: 0x0000000104e43660 clang-dxc`clang::FrontendAction::Execute(this=0x000000012f62aaa0) at FrontendAction.cpp:1225:3
frame #19: 0x0000000104d5acac clang-dxc`clang::CompilerInstance::ExecuteAction(this=0x000000012f624e30, Act=0x000000012f62aaa0) at CompilerInstance.cpp:1058:33
frame #20: 0x0000000104f80450 clang-dxc`clang::ExecuteCompilerInvocation(Clang=0x000000012f624e30) at ExecuteCompilerInvocation.cpp:300:25
frame #21: 0x0000000100013b20 clang-dxc`cc1_main(Argv=ArrayRef<const char *> @ 0x000000016fdf5f88, Argv0="/Users/farzonlotfi/Projects/llvm_debug_build/bin/clang-20", MainAddr=0x00000001000039e8) at cc1_main.cpp:294:15
frame #22: 0x0000000100005390 clang-dxc`ExecuteCC1Tool(ArgV=0x000000016fdf9778, ToolContext=0x000000016fdfe728) at driver.cpp:223:12
frame #23: 0x000000010001249c clang-dxc`clang_main(int, char**, llvm::ToolContext const&)::$_0::operator()(this=0x000000016fdfa2b8, ArgV=0x000000016fdf9778) const at driver.cpp:369:16
frame #24: 0x000000010001246c clang-dxc`int llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::callback_fn<clang_main(int, char**, llvm::ToolContext const&)::$_0>(callable=6171894456, params=0x000000016fdf9778) at STLFunctionalExtras.h:46:12
frame #25: 0x0000000104a63a18 clang-dxc`llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::operator()(this=0x000000016fdfa940, params=0x000000016fdf9778) const at STLFunctionalExtras.h:69:12
frame #26: 0x0000000104a639d8 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=0x000000016fdf96d8) const at Job.cpp:435:34
frame #27: 0x0000000104a639a4 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=6171891416) at STLFunctionalExtras.h:46:12
frame #28: 0x00000001011718e4 clang-dxc`llvm::function_ref<void ()>::operator()(this=0x000000016fdf9678) const at STLFunctionalExtras.h:69:12
frame #29: 0x00000001030becfc clang-dxc`llvm::CrashRecoveryContext::RunSafely(this=0x000000016fdf9718, Fn=function_ref<void ()> @ 0x000000016fdf9678) at CrashRecoveryContext.cpp:426:3
frame #30: 0x0000000104a5fec8 clang-dxc`clang::driver::CC1Command::Execute(this=0x000000012f6250b0, Redirects=ArrayRef<std::__1::optional<llvm::StringRef> > @ 0x000000016fdf9760, ErrMsg="", ExecutionFailed=0x000000016fdf9c6f) const at Job.cpp:435:12
frame #31: 0x00000001049f57f4 clang-dxc`clang::driver::Compilation::ExecuteCommand(this=0x000000012f623bd0, C=0x000000012f6250b0, FailingCommand=0x000000016fdf9d88, LogOnly=false) const at Compilation.cpp:196:15
frame #32: 0x00000001049f5a80 clang-dxc`clang::driver::Compilation::ExecuteJobs(this=0x000000012f623bd0, Jobs=0x000000012f623c50, FailingCommands=0x000000016fdfa618, LogOnly=false) const at Compilation.cpp:251:19
frame #33: 0x0000000104a140a4 clang-dxc`clang::driver::Driver::ExecuteCompilation(this=0x000000016fdfa668, C=0x000000012f623bd0, FailingCommands=0x000000016fdfa618) at Driver.cpp:2225:5
frame #34: 0x0000000100004b0c clang-dxc`clang_main(Argc=16, Argv=0x000000016fdfee60, ToolContext=0x000000016fdfe728) at driver.cpp:407:21
frame #35: 0x000000010003f22c clang-dxc`main(argc=16, argv=0x000000016fdfee60) at clang-driver.cpp:17:10
frame #36: 0x0000000183f4eb4c dyld`start + 6000
Metadata
Metadata
Assignees
Type
Projects
Status
Active