Consider: extern void *bar (void);
int foo (unsigned int *p) { const void *r = bar (); if (r >= (const void *) *p) return 1; return 0; } t03.generic looks like so. foo (p) { void * D.1155; unsigned int D.1156; int D.1157; const void * r; D.1155 = bar (); r = D.1155; D.1156 = *p; if (D.1156 <= r) { D.1157 = 1; return D.1157; } else { } D.1157 = 0; return D.1157; } Note that "if (D.1156 <= r)" has a type mismatch, namely an integer type v.s. a pointer type. This PR is the real cause of PR 21021. -- Summary: Type mismatch in a comparison. Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P2 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: kazu at cs dot umass dot edu CC: dnovillo at redhat dot com,gcc-bugs at gcc dot gnu dot org OtherBugsDependingO 21021 nThis: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21024