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

Reply via email to