diff options
| author | Yong He <yonghe@outlook.com> | 2023-03-23 22:42:59 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-23 22:42:59 -0700 |
| commit | 56a84a06488afb817f79fbd99e8b470bd587ccd1 (patch) | |
| tree | f6da5c3d723123880c55530b86066568dbb7ca28 /source/slang/slang-lower-to-ir.cpp | |
| parent | e004511b5f75bb24df1adec71b005146917afb39 (diff) | |
Fix various autodiff crashes related to interface usage. (#2730)
* Fix crash.
* Fix `[ForwradDerivative]` on member functions.
* Update comments.
* Fix crash when [BackwardDerivative] is provided but not [ForwardDerivative].
* Allow calling dynamic dispatched generic method from differentiable func.
* Fix.
---------
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-lower-to-ir.cpp')
| -rw-r--r-- | source/slang/slang-lower-to-ir.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/source/slang/slang-lower-to-ir.cpp b/source/slang/slang-lower-to-ir.cpp index f84f17886..9c27beb58 100644 --- a/source/slang/slang-lower-to-ir.cpp +++ b/source/slang/slang-lower-to-ir.cpp @@ -8484,10 +8484,15 @@ struct DeclLoweringVisitor : DeclVisitor<DeclLoweringVisitor, LoweredValInfo> funcExpr = udAttr->funcExpr; else if (auto primalAttr = as<PrimalSubstituteAttribute>(modifier)) funcExpr = primalAttr->funcExpr; + DeclRefExpr* declRefExpr = as<DeclRefExpr>(funcExpr); + auto funcType = lowerType(subContext, funcExpr->type); + auto loweredVal = emitDeclRef( + subContext, + declRefExpr->declRef, + funcType); + + SLANG_RELEASE_ASSERT(loweredVal.flavor == LoweredValInfo::Flavor::Simple); - auto loweredVal = lowerRValueExpr(subContext, funcExpr); - - SLANG_ASSERT(loweredVal.flavor == LoweredValInfo::Flavor::Simple); IRInst* derivativeFunc = loweredVal.val; if (as<ForwardDerivativeAttribute>(modifier)) |
