------- Comment #2 from rguenth at gcc dot gnu dot org  2010-07-02 15:32 -------
Reduced testcase:

typedef struct rtx_def *rtx;
enum rtx_code { SUBREG };
typedef union rtunion_def {
    long rtint;
    unsigned long rtuint;
    rtx rtx;
} rtunion;
struct rtx_def {
    enum rtx_code code: 8;
    rtunion fld[1];
};
typedef struct simple_bitmap_def {
    unsigned long long elms[1];
} *sbitmap;
struct df_link {
    struct df_link *next;
    rtx reg;
};
typedef enum { UNDEFINED,   CONSTANT,   VARYING } latticevalue;
typedef struct {
    latticevalue lattice_val;
} value;
static value *values;
static sbitmap ssa_edges;
void defs_to_varying (struct df_link *start)
{
  struct df_link *currdef;
  for (currdef = start;
       currdef;
       currdef = currdef->next)
    {
      rtx reg = currdef->reg;
      if (values[(reg->code == SUBREG
                  ? reg->fld[0].rtx
                  : reg)->fld[0].rtuint].lattice_val != VARYING)
        ssa_edges->elms [(reg->code == SUBREG
                          ? reg->fld[0].rtx
                          : reg)->fld[0].rtuint / 64]
            |= ((unsigned long long) 1
                << (reg->code == SUBREG
                    ? reg->fld[0].rtx
                    : reg)->fld[0].rtuint % 64);
      values[(reg->code == SUBREG
              ? reg->fld[0].rtx
              : reg)->fld[0].rtuint].lattice_val = VARYING;
    }
}


-- 


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

Reply via email to