YAMAMOTO Mitsuharu wrote: > With the above macros, XUNTAG (a, type) is expanded to: > > ((void *) ((char *) (0) - (type) + (intptr_t) XLI (a))) > > It is relative to the NULL pointer and clang seems to treat its > dereference as an undefined behavior. Thanks for diagnosing that. This is arguably a bug in clang, but it's easy enough to work around as you suggest. I reproduced the problem with Fedora 21 x86-64 (clang 3.5.0) and installed the attached patch, which fixed it for me.