[cfe-dev] Null pointer constants and the glibc tgmath.h

Eli Friedman eli.friedman at gmail.com
Wed Feb 13 10:07:17 PST 2008


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



More information about the cfe-dev mailing list