================
@@ -83,6 +83,23 @@ static bool isVarThatIsPossiblyChanged(const Decl *Func,
const Stmt *LoopStmt,
isChanged(LoopStmt, Var, Context);
// FIXME: Track references.
}
+
+ if (const auto *BD = dyn_cast<BindingDecl>(DRE->getDecl())) {
+ if (const auto *DD =
+ dyn_cast<DecompositionDecl>(BD->getDecomposedDecl())) {
+ if (!DD->isLocalVarDeclOrParm())
+ return true;
+
+ if (DD->getType().isVolatileQualified())
+ return true;
+
+ if (!BD->getType().getTypePtr()->isIntegerType())
+ return true;
+
+ return hasPtrOrReferenceInFunc(Func, BD) ||
+ isChanged(LoopStmt, BD, Context);
----------------
HerrCai0907 wrote:
avoid duplicated code with `VarDecl` part. extract them to separated function
https://github.com/llvm/llvm-project/pull/144213
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits