/* PR tree-optimization/103255 */

struct H {
    unsigned a;
    unsigned b;
    unsigned c;
};

#if __SIZEOF_POINTER__ >= 4
#define ADDR 0x400000
#else
#define ADDR 0x4000
#endif
#define OFF 0x20

int main() {
    struct H *h = 0;
    unsigned long o;
    volatile int t = 1;

    for (o = OFF; o <= OFF; o += 0x1000) {
        struct H *u;
        u = (struct H *)(ADDR + o);
        if (t) {
            h = u;
            break;
        }
    }

    if (h == 0)
        return 0;
    unsigned *tt = &h->b;
    if ((__SIZE_TYPE__)tt != (ADDR + OFF + __builtin_offsetof(struct H, b)))
        __builtin_abort();
    return 0;
}
