/* PR target/39423 */ typedef unsigned short uint16_t; typedef struct { short x, y; } P; typedef struct { uint16_t w, h; } D; typedef struct { P p; D s; } A; typedef struct { uint16_t f; } W; typedef struct { void* w; D s; } T; extern void* foo00 (void*, void*); void foo01 (W* w) { void* it; uint16_t c, i; T* cl; T* rs; T* t; uint16_t rh = 0; uint16_t v = !(w->f & 0x8000); A a = { }; for (c = 0, it = foo00 (w, 0); it; it = foo00 (w, it), c++); for (it = foo00 (w, 0), i = 0; i <= c; it = foo00 (w, it), i++, cl++) { if (i) for (t = rs; t < cl; t++) *((uint16_t*)&t->s + ((!v) ? 1 : 0)) = rh; rh = (rh > ((*((uint16_t*)&a.s + ((!v) ? 1 : 0))))) ? rh : ((*((uint16_t*)&a.s + ((!v) ? 1 : 0)))); } }