struct NonPOD {
virtual void f();
int m;
};
struct P {
NonPOD fieldThatPointsToANonPODType;
};
void f() {
int i = __builtin_offsetof(P, fieldThatPointsToANonPODType.m); }
struct Base { int x; };
struct Derived : Base { int y; };
int o = __builtin_offsetof(Derived, x);
const int o2 = sizeof(__builtin_offsetof(Derived, x));
struct HasArray {
int array[17];
};
void test_ice(int i) {
int array0[__builtin_offsetof(HasArray, array[5])];
int array1[__builtin_offsetof(HasArray, array[i])];
}
struct has_bitfields {
int i : 7;
int j : 12; };
int test3 = __builtin_offsetof(struct has_bitfields, j);
struct Base1 {
int x;
};
struct Base2 {
int y;
};
struct Derived2 : public Base1, public Base2 {
int z;
};
int derived1[__builtin_offsetof(Derived2, x) == 0? 1 : -1];
int derived2[__builtin_offsetof(Derived2, y) == 4? 1 : -1];
int derived3[__builtin_offsetof(Derived2, z) == 8? 1 : -1];
struct foo {
struct {
int x;
};
};
struct bar : public foo {
};
int anonstruct[__builtin_offsetof(bar, x) == 0 ? 1 : -1];
struct LtoRCheck {
int a[10];
int f();
};
int ltor = __builtin_offsetof(struct LtoRCheck, a[LtoRCheck().f]); expected-error {{reference to non-static member function must be called}}