[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