From 9476d4543f4336a66308e55f722b0b0b2bd69dd2 Mon Sep 17 00:00:00 2001 From: Yong He Date: Thu, 16 Mar 2023 23:46:14 -0700 Subject: Fix Phi simplification bug. (#2710) * Fix Phi simplification bug. * Fix up. * Fix. * Fix. * Fix. * Fix. * Fix. * Fix test. * Fix test. --------- Co-authored-by: Yong He --- source/slang/slang-ir-check-differentiability.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source/slang/slang-ir-check-differentiability.cpp') diff --git a/source/slang/slang-ir-check-differentiability.cpp b/source/slang/slang-ir-check-differentiability.cpp index 6f97ce076..14178a86c 100644 --- a/source/slang/slang-ir-check-differentiability.cpp +++ b/source/slang/slang-ir-check-differentiability.cpp @@ -194,7 +194,7 @@ public: return false; } - bool instHasNonTrivialDerivative(IRInst* inst) + bool instHasNonTrivialDerivative(DifferentiableTypeConformanceContext& diffTypeContext, IRInst* inst) { switch (inst->getOp()) { @@ -206,7 +206,7 @@ public: return isDifferentiableFunc(call->getCallee(), CheckDifferentiabilityPassContext::DifferentiableLevel::Forward); } default: - return true; + return isDifferentiableType(diffTypeContext, inst->getDataType()); } } @@ -468,7 +468,7 @@ public: if (auto storeInst = as(inst)) { if (produceDiffSet.Contains(storeInst->getVal()) && - instHasNonTrivialDerivative(storeInst->getVal()) && + instHasNonTrivialDerivative(diffTypeContext, storeInst->getVal()) && !canAddressHoldDerivative(diffTypeContext, storeInst->getPtr())) { sink->diagnose(storeInst->sourceLoc, Diagnostics::lossOfDerivativeAssigningToNonDifferentiableLocation); -- cgit v1.2.3