[PATCH] D133934: [clang][Interp] Handle sizeof() expressions
Timm Bäder via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Sep 16 07:59:33 PDT 2022
tbaeder added inline comments.
================
Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:290
+
+ if (!ArgType->isConstantSizeType() ||
+ ArgType->isDependentType())
----------------
tbaeder wrote:
> erichkeane wrote:
> > tbaeder wrote:
> > > erichkeane wrote:
> > > > Documentation for `isConstantSizedType` says it isn't legal to call it on dependent or incomplete types. so this probably needs to be:
> > > >
> > > > ``` if (ArgType->isDependentType() || ArgType->isIncompleteType() || !ArgType->isConstantSizedType())```
> > > >
> > > > In roughly that order.
> > > `isDependentType()` is implicitly assumed, isn't it? `ExprConstant.cpp` asserts everywhere that neither types nor expressions are (value)dependent. It also doesn't handle that in `HandleSizeof`.
> > Ok, good to know about that then. I saw you'd tested for isDependentType above, but isConstantSizedType would assert in that case.
> Yup, I switched the order around.
... and of course I run into an incomplete type assertion with the `sizeof(void)` example when the file type is C.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D133934/new/
https://reviews.llvm.org/D133934
More information about the cfe-commits
mailing list