[clang] [Clang] Correct the DeclRefExpr's Type after the initializer gets instantiated (PR #133212)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Mar 27 01:47:42 PDT 2025
================
@@ -19849,11 +19849,14 @@ static void DoMarkVarDeclReferenced(
SemaRef.InstantiateVariableDefinition(PointOfInstantiation, Var);
});
- // Re-set the member to trigger a recomputation of the dependence bits
- // for the expression.
- if (auto *DRE = dyn_cast_or_null<DeclRefExpr>(E))
+ if (auto *DRE = dyn_cast_or_null<DeclRefExpr>(E)) {
+ // Re-set the member to trigger a recomputation of the dependence bits
+ // for the expression.
DRE->setDecl(DRE->getDecl());
- else if (auto *ME = dyn_cast_or_null<MemberExpr>(E))
+ if (SemaRef.Context.getAsIncompleteArrayType(DRE->getType()) &&
+ !SemaRef.Context.getAsIncompleteArrayType(Var->getType()))
+ DRE->setType(Var->getType());
+ } else if (auto *ME = dyn_cast_or_null<MemberExpr>(E))
----------------
cor3ntin wrote:
So, I was looking at where `InstantiateVariableDefinition` is used.
And I found out we have a `completeExprArrayBound` function - I suspect we might want to use that. Can you look into it?
https://github.com/llvm/llvm-project/pull/133212
More information about the cfe-commits
mailing list