__unqual_typeof
union { __unqual_typeof(x) __val; char __c[1]; } __u = \
__read_once_size((__unqual_typeof(x) *)&(x), __u.__c, sizeof(x)); \
union { __unqual_typeof(x) __val; char __c[1]; } __u = \
__write_once_size((__unqual_typeof(x) *)&(x), __u.__c, sizeof(x)); \
__unqual_typeof(*(p)) VAL; \
VAL = (__unqual_typeof(*(p)))READ_ONCE(*__ptr); \
__unqual_typeof(*p) __val = \
__unqual_typeof(*(pold)) __o = *(pold); \
__unqual_typeof(*(p)) __r = cmpxchg(p, __o, new); \
__unqual_typeof(*(p)) __v = READ_ONCE(*(p)); \