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; } }