ipr = conn->pcb->ip->remote_ip;
Assuming
conn is of type
struct netconn*, the pointed object contains an actual
pcb union, not a pointer to a
pcb union.
Union members are accessed using the . operator (as are struct members).
So:
ipr = conn->pcb.ip->remote_ip;
should be what you are after.
In the debug screen capture, you can notice that there is not arrow close to
pcb, as opposed to e.g.
conn or
ip.
Ref (C11): 6.5.2.3 Structure and union members, ยง1.
BTW: nothing to do with GCC in particular, just plain C.