tbaeder added inline comments.
================ Comment at: clang/lib/AST/Interp/ByteCodeExprGen.h:282 + bool isGlobalDecl(const VarDecl *VD) const { + return !VD->hasLocalStorage() || VD->isConstexpr(); + } ---------------- shafik wrote: > tbaeder wrote: > > 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. > I think I am missing a level of logic here. I don't think of constant > expressions as needing storage nor do I think of them as global variables. > > So can you take a step back and explain how this fits in the bigger picture? They don't necessarily need storage in the final executable but we create global/local variables for them for bookkeeping, e.g. we need to be able to take their address, track the value, etc. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136815/new/ https://reviews.llvm.org/D136815 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits