[Bug middle-end/15848] New: Invalid GIMPLE generated

dberlin at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Sun Jun 6 13:34:00 GMT 2004


The following testcase generates invalid GIMPLE:

typedef struct _ImageInfo {
} ImageInfo;
typedef struct _PointInfo {
    unsigned int    colors;
} Image;
Image          *
ReadBMPImage(const ImageInfo * image_info)
{
    Image          *image;
    register int    bit, i, x, y;
    unsigned char  *bmp_pixels, magick[12];
    unsigned int    bytes_per_line, image_size, status;
    if ((status == 0) || (strncmp((char *) magick, "BM", 2) != 0)) {
        for (i = 0; i < (int) image->colors; i++) {
        }
    }
}


This generates (among other statements), magick.0<D1119> = (char<D1> *)&magick<D1113>;
This is not valid GIMPLE, since the ADDR_EXPR should be separate from the cast.

-- 
           Summary: Invalid GIMPLE generated
           Product: gcc
           Version: 3.5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: middle-end
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: dberlin at gcc dot gnu dot org
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15848



More information about the Gcc-bugs mailing list