[clang] [Clang] Implement P2280R4 Using unknown pointers and references in constant expressions (PR #95474)

Akira Hatanaka via cfe-commits cfe-commits at lists.llvm.org
Mon May 19 13:44:10 PDT 2025


ahatanak wrote:

> Looks like a bug to me. This warning presumably ought to be checking whether it's valid to read / write to the given location using something like [`isUserWritingOffTheEnd`](https://github.com/llvm/llvm-project/blob/b2e2ae8702e9fbbe0ef0eb5929aa2d5dc867b1c5/clang/lib/AST/ExprConstant.cpp#L12699). (But I don't think that's a bug in _this_ PR.)

Should `foo` in the following code return 4 when `-fstrict-flex-arrays` is 2 or 3 (but not when it's 0 or 1) only when the target is `-std=c++23` or newer? Or should it return 4 for older standards too?

```
struct S {
  int count;
  int array[1];
};

int foo(S &s) {
  return __builtin_object_size(s.array, 0);
}
```

And this function should return -1 regardless of what the standard is because `s` is a pointer?

```
int foo(S *s) {
  return __builtin_object_size(s->array, 0);
}
```

https://github.com/llvm/llvm-project/pull/95474


More information about the cfe-commits mailing list