blob: bc7a707ee546b86a14b78139b118bda69b793fb6 [file] [log] [blame]
Eli Friedmanc0d600c2009-05-03 21:22:18 +00001// RUN: clang-cc -fsyntax-only -verify %s -Winvalid-offsetof
Anders Carlsson6d7f1492009-05-01 23:20:30 +00002
3struct NonPOD {
4 virtual void f();
5 int m;
6};
7
8struct P {
9 NonPOD fieldThatPointsToANonPODType;
10};
11
12void f() {
Anders Carlssonf9b8bc62009-05-02 17:45:47 +000013 int i = __builtin_offsetof(P, fieldThatPointsToANonPODType.m); // expected-warning{{offset of on non-POD type 'struct P'}}
Anders Carlsson6d7f1492009-05-01 23:20:30 +000014}
15
Eli Friedman16c53782009-12-04 07:18:51 +000016struct Base { int x; };
17struct Derived : Base { int y; };
18int o = __builtin_offsetof(Derived, x); // expected-warning{{offset of on non-POD type}}
Douglas Gregor75b699a2009-12-12 07:25:49 +000019
20const int o2 = sizeof(__builtin_offsetof(Derived, x));