[PATCH] D133934: [clang][Interp] Handle sizeof() expressions
Aaron Ballman via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Sep 15 08:56:12 PDT 2022
aaron.ballman added inline comments.
================
Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:290
+ return this->emitConst(
+ E, Ctx.getASTContext().getTypeSizeInChars(ArgType).getQuantity());
+ }
----------------
erichkeane wrote:
> shafik wrote:
> > I notice that `HandleSizeof` special cases `void` and function types.
> OOOH, DEFINITELY make sure you test function types here, and figure out how HandleSizeof does it.
>
> BUT, I think 'void' should error/be an invalid before we get here?
>
> ALSO, now that I think further, I'm sure @aaron.ballman has a bunch of runtime-evaluated sizeof examples to share around vlas.
I was just about to comment about everyone's favorite horrible C++ extension. :-D We should make sure we properly reject code like:
```
void func() {
int n = 12;
constexpr int oofda = sizeof(int[n++]);
}
```
while accepting code like:
```
consteval int foo(int n) {
return sizeof(int[n]);
}
constinit int var = foo(5);
```
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D133934/new/
https://reviews.llvm.org/D133934
More information about the cfe-commits
mailing list