OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.c-torture/] [compile/] [pr44784.c] - Rev 774

Go to most recent revision | Compare with Previous | Blame | View Log

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

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.