typedef volatile union { unsigned long l; unsigned long long ll; void *v; } a_t; void *foo() { a_t a; void *v; a.v = v; return a.v; }