X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firmode.c;h=1901632c2643f737d36757f361d500271e41b6fa;hb=5f8ddee6b08c8040c0a304a347d65045c1141d52;hp=9fe2f5cf486067c1bc028a6a88952cbc711d7791;hpb=efbeaff549fcc6015da255ed4d453a95937ff0fd;p=libfirm diff --git a/ir/ir/irmode.c b/ir/ir/irmode.c index 9fe2f5cf4..1901632c2 100644 --- a/ir/ir/irmode.c +++ b/ir/ir/irmode.c @@ -5,7 +5,7 @@ ** */ -# include "irmode.h" +# include "irmode_t.h" # include # include # include "tv.h" @@ -31,31 +31,32 @@ ir_mode *mode_M; ir_mode *mode_R; ir_mode *mode_Z; - void init_mode (void) { - /* allocate all modes */ - mode_T = (ir_mode *) malloc (sizeof (ir_mode)); - mode_f = (ir_mode *) malloc (sizeof (ir_mode)); - mode_d = (ir_mode *) malloc (sizeof (ir_mode)); - mode_c = (ir_mode *) malloc (sizeof (ir_mode)); - mode_C = (ir_mode *) malloc (sizeof (ir_mode)); - mode_h = (ir_mode *) malloc (sizeof (ir_mode)); - mode_H = (ir_mode *) malloc (sizeof (ir_mode)); - mode_i = (ir_mode *) malloc (sizeof (ir_mode)); - mode_I = (ir_mode *) malloc (sizeof (ir_mode)); - mode_l = (ir_mode *) malloc (sizeof (ir_mode)); - mode_L = (ir_mode *) malloc (sizeof (ir_mode)); - mode_B = (ir_mode *) malloc (sizeof (ir_mode)); - mode_b = (ir_mode *) malloc (sizeof (ir_mode)); - mode_p = (ir_mode *) malloc (sizeof (ir_mode)); - mode_s = (ir_mode *) malloc (sizeof (ir_mode)); - mode_S = (ir_mode *) malloc (sizeof (ir_mode)); - mode_X = (ir_mode *) malloc (sizeof (ir_mode)); - mode_M = (ir_mode *) malloc (sizeof (ir_mode)); - mode_R = (ir_mode *) malloc (sizeof (ir_mode)); - mode_Z = (ir_mode *) malloc (sizeof (ir_mode)); + /* allocate all modes. We need to memset them as tarval_vrfy + reads fields before they are initialized: It compares to + min/max when tarvals for min/max are allocated! */ + mode_T = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_T, 0, sizeof(ir_mode)); + mode_f = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_f, 0, sizeof(ir_mode)); + mode_d = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_d, 0, sizeof(ir_mode)); + mode_c = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_c, 0, sizeof(ir_mode)); + mode_C = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_C, 0, sizeof(ir_mode)); + mode_h = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_h, 0, sizeof(ir_mode)); + mode_H = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_H, 0, sizeof(ir_mode)); + mode_i = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_i, 0, sizeof(ir_mode)); + mode_I = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_I, 0, sizeof(ir_mode)); + mode_l = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_l, 0, sizeof(ir_mode)); + mode_L = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_L, 0, sizeof(ir_mode)); + mode_B = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_B, 0, sizeof(ir_mode)); + mode_b = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_b, 0, sizeof(ir_mode)); + mode_p = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_p, 0, sizeof(ir_mode)); + mode_s = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_s, 0, sizeof(ir_mode)); + mode_S = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_S, 0, sizeof(ir_mode)); + mode_X = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_X, 0, sizeof(ir_mode)); + mode_M = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_M, 0, sizeof(ir_mode)); + mode_R = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_R, 0, sizeof(ir_mode)); + mode_Z = (ir_mode *) malloc (sizeof (ir_mode)); memset(mode_Z, 0, sizeof(ir_mode)); mode_T->code = irm_T; mode_f->code = irm_f; @@ -202,10 +203,12 @@ init_mode (void) mode_S->fsigned = 0; mode_S->ffloat = 0; + /* Execution */ mode_X->name = id_from_str ("X", 1); mode_X->fsigned = 0; mode_X->ffloat = 0; + /* Memory */ mode_M->name = id_from_str ("M", 1); mode_M->fsigned = 0; mode_M->ffloat = 0; @@ -217,20 +220,19 @@ init_mode (void) mode_Z->name = id_from_str ("Z", 1); mode_Z->fsigned = 1; mode_Z->ffloat = 0; - } /* Functions for the direct access to all attributes od a ir_mode */ modecode -get_modecode_of_mode (ir_mode *mode) +get_mode_modecode (ir_mode *mode) { return mode->code; } /* inline void -set_modecode_of_mode (ir_mode *mode, modecode code) +set_mode_modecode (ir_mode *mode, modecode code) { mode->code = code; } @@ -244,104 +246,111 @@ get_mode_ident (ir_mode *mode) /* inline void -set_ident_of_mode (ir_mode *mode, ident *name) +set_mode_ident (ir_mode *mode, ident *name) { mode->name = name; } */ +inline const char * +get_mode_name (ir_mode *mode) { + assert(mode); + return id_to_str(mode->name); +} +/* void set_mode_name (ir_mode *mode, char *name); */ + int -get_size_of_mode (ir_mode *mode) +get_mode_size (ir_mode *mode) { return mode->size; } /* inline void -set_size_of_mode (ir_mode *mode, int size) +set_mode_size (ir_mode *mode, int size) { mode->size = size; } */ int -get_ld_align_of_mode (ir_mode *mode) +get_mode_ld_align (ir_mode *mode) { return mode->ld_align; } /* inline void -set_ld_align_of_mode (ir_mode *mode, int ld_align) +set_mode_ld_align (ir_mode *mode, int ld_align) { mode->ld_align = ld_align; } */ tarval * -get_min_of_mode (ir_mode *mode) +get_mode_min (ir_mode *mode) { return mode->min; } /* inline void -set_min_of_mode (ir_mode *mode, struct tarval *min) +set_mode_min (ir_mode *mode, tarval *min) { mode->min = min; } */ tarval * -get_max_of_mode (ir_mode *mode) +get_mode_max (ir_mode *mode) { return mode->max; } /* inline void -set_max_of_mode (ir_mode *mode, struct tarval *max) +set_mode_max (ir_mode *mode, tarval *max) { mode->max = max; } */ tarval * -get_null_of_mode (ir_mode *mode) +get_mode_null (ir_mode *mode) { return mode->null; } /* inline void -set_null_of_mode (ir_mode *mode, struct tarval *null) +set_mode_null (ir_mode *mode, tarval *null) { mode->null = null; } */ unsigned -get_fsigned_of_mode (ir_mode *mode) +get_mode_fsigned (ir_mode *mode) { return mode->fsigned; } /* inline voida -set_fsigned_of_mode (ir_mode *mode, unsigned fsigned) +set_mode_fsigned (ir_mode *mode, unsigned fsigned) { mode->fsigned = fsigned; } */ unsigned -get_ffloat_of_mode (ir_mode *mode) +get_mode_ffloat (ir_mode *mode) { return mode->ffloat; } /* inline void -set_ffloat_of_mode (ir_mode *mode, unsigned ffloat) +set_mode_ffloat (ir_mode *mode, unsigned ffloat) { mode->ffloat = ffloat; } @@ -389,7 +398,7 @@ mode_is_signed (ir_mode *mode) { int res; unsigned fsigned; - fsigned = get_fsigned_of_mode (mode); + fsigned = get_mode_fsigned (mode); if (fsigned == 1) { res = 1; } @@ -404,7 +413,7 @@ mode_is_float (ir_mode *mode) { int res; unsigned ffloat; - ffloat = get_ffloat_of_mode (mode); + ffloat = get_mode_ffloat (mode); if (ffloat == 1) { res = 1; } @@ -420,7 +429,7 @@ mode_is_int (ir_mode *mode) { int res; modecode code; - code = get_modecode_of_mode (mode); + code = get_mode_modecode (mode); if ((code >= irm_c) && (code <= irm_L)) { res = 1; } @@ -449,7 +458,7 @@ mode_is_data (ir_mode *mode) { int res; modecode code; - code = get_modecode_of_mode (mode); + code = get_mode_modecode (mode); if (mode_is_num (mode) || code == irm_p) { res = 1; } @@ -464,7 +473,7 @@ mode_is_datab (ir_mode *mode) { int res; modecode code; - code = get_modecode_of_mode (mode); + code = get_mode_modecode (mode); if (mode_is_data (mode) || code == irm_b || code == irm_B) { res = 1; } @@ -479,7 +488,7 @@ mode_is_dataM (ir_mode *mode) { int res; modecode code; - code = get_modecode_of_mode (mode); + code = get_mode_modecode (mode); if (mode_is_data (mode) || code == irm_M) { res = 1; }