[clang] [Clang] Fix missing diagnostic for non-standard layout type in `offsetof` (PR #65246)

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Tue Sep 5 07:21:37 PDT 2023


================
@@ -17,7 +17,7 @@ struct Base { int x; };
 struct Derived : Base { int y; };
 int o = __builtin_offsetof(Derived, x); // expected-warning{{offset of on non-POD type}}
 
-const int o2 = sizeof(__builtin_offsetof(Derived, x));
+const int o2 = sizeof(__builtin_offsetof(Derived, x)); // expected-warning{{offset of on non-POD type 'Derived'}}
----------------
AaronBallman wrote:

This is an example of why I think the existing behavior is correct. The fact that we're asking for the offset of a field on a non-POD type is not harmful because the call is never evaluated.

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


More information about the cfe-commits mailing list