[clang] [Clang] Correct the DeclRefExpr's Type after the initializer gets instantiated (PR #133212)
Younan Zhang via cfe-commits
cfe-commits at lists.llvm.org
Thu Mar 27 01:10:10 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))
----------------
zyn0217 wrote:
> it feels too late
Hmm. This is the last place where we know the DeclRefExpr that needs an update, (The instantiation doesn't care the DeclRefExpr) and the instantiation happens right before these lines
https://github.com/llvm/llvm-project/pull/133212
More information about the cfe-commits
mailing list