[PATCH] D136815: [clang][Interp] Unify visiting variable declarations
Timm Bäder via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sun Oct 30 23:47:36 PDT 2022
tbaeder added inline comments.
================
Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:803
+ // Make sure we don't accidentally register the same decl twice.
+ if (const Decl *VD = Src.dyn_cast<const Decl *>(); VD && isa<ValueDecl>(VD)) {
+ assert(!P.getGlobal(cast<ValueDecl>(VD)));
----------------
shafik wrote:
> Nitpick, I find using `VD` a bit confusing since we don't know if it is a `ValueDecl` until after it is initialized.
Replaced this with the same version we use a few lines below anyway.
================
Comment at: clang/lib/AST/Interp/ByteCodeExprGen.h:282
+ bool isGlobalDecl(const VarDecl *VD) const {
+ return !VD->hasLocalStorage() || VD->isConstexpr();
+ }
----------------
shafik wrote:
> Why not `hasGlobalStorage()`?
>
> Also what is the logic behind `isConstexpr()` check?
Didn't know `isGlobalStorage()` existed ;)
Constexpr local variables can be handled like global ones, can't they? That was the logic behind it, nothing else. We can save ourselves the hassle of local variables in that case.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D136815/new/
https://reviews.llvm.org/D136815
More information about the cfe-commits
mailing list