Null pointer constants and the glibc tgmath.h

Testcase:

int a() {
*(0 ? (double *) 0 : (void *) !0.25) = 10;
}

clang rejects this with an error because the left-hand side has type
void; comeau and gcc accept it.

clang's behavior is pretty clearly correct per the standard; however,
the linux (glibc) tgmath.h expects that "(0 ? (double *) 0 : (void *)
!0.25)" has type double*, not void*. Therefore, making tgmath.h work
requires being non-compliant with C99.

Thoughts?

-Eli