From b8663a5d93e6e73d5e2d7e737cffd1efac055719 Mon Sep 17 00:00:00 2001 From: Yong He Date: Tue, 29 Jul 2025 19:26:52 -0700 Subject: Fix ICE when immutable value is passed to a bwd_diff function. (#7973) --- source/slang/slang-check-expr.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'source') diff --git a/source/slang/slang-check-expr.cpp b/source/slang/slang-check-expr.cpp index 31b08e925..f70760c5d 100644 --- a/source/slang/slang-check-expr.cpp +++ b/source/slang/slang-check-expr.cpp @@ -2703,10 +2703,14 @@ void SemanticsVisitor::maybeDiagnoseConstVariableAssignment(Expr* expr) { e = subscriptExpr->baseExpression; } - else + else if (as(e)) { break; } + else + { + return; + } } // Check if we're trying to assign to a non-l-value (const variable, immutable member, etc.) @@ -2979,7 +2983,9 @@ Expr* SemanticsVisitor::CheckInvokeExprWithCheckedOperands(InvokeExpr* expr) else if (!as(argExpr->type)) { // Emit additional diagnostic for invalid pointer taking operations - auto funcDeclRef = getDeclRef(m_astBuilder, funcDeclRefExpr); + auto funcDeclRef = funcDeclRefExpr + ? getDeclRef(m_astBuilder, funcDeclRefExpr) + : DeclRef(); if (funcDeclRef) { auto knownBuiltinAttr = -- cgit v1.2.3