From: Michael Beck Date: Tue, 22 Apr 2003 14:44:14 +0000 (+0000) Subject: Fixed default modes, all members must be initialized. X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=78a011d736148f3d78928ef475837b1293a6ea37;p=libfirm Fixed default modes, all members must be initialized. new_ir_mode() now uses the name of a mode to compare, because some modes are only different by their names... [r1083] --- diff --git a/ir/ir/irmode.c b/ir/ir/irmode.c index d40714052..6fb176a45 100644 --- a/ir/ir/irmode.c +++ b/ir/ir/irmode.c @@ -54,7 +54,8 @@ static int modes_are_equal(ir_mode *m, ir_mode *n) { if (m == n) return 1; if ( (m->sort == n->sort) && (m->size == n->size) && - (m->align == n->align) && (m->sign == n->sign) + (m->align == n->align) && (m->sign == n->sign) && + (m->name == n->name) ) return 1; @@ -531,207 +532,218 @@ init_mode (void) /* initialize predefined modes */ /* Basic Block */ mode_BB = &modes[irm_BB]; - mode_BB->name = id_from_str("BB", 2); - mode_BB->code = irm_BB; - mode_BB->sort = irms_auxiliary; - mode_BB->sign = 0; + mode_BB->name = id_from_str("BB", 2); + mode_BB->code = irm_BB; + mode_BB->sort = irms_auxiliary; + mode_BB->size = 0; + mode_BB->align = 0; + mode_BB->sign = 0; mode_BB->tv_priv = NULL; /* eXecution */ mode_X = &modes[irm_X]; - mode_X->name = id_from_str("X", 1); - mode_X->code = irm_X; - mode_X->sort = irms_auxiliary; - mode_X->sign = 0; + mode_X->name = id_from_str("X", 1); + mode_X->code = irm_X; + mode_X->sort = irms_auxiliary; + mode_X->size = 0; + mode_X->align = 0; + mode_X->sign = 0; mode_X->tv_priv = NULL; /* Memory */ mode_M = &modes[irm_M]; - mode_M->name = id_from_str("M", 1); - mode_M->code = irm_M; - mode_M->sort = irms_auxiliary; - mode_M->sign = 0; + mode_M->name = id_from_str("M", 1); + mode_M->code = irm_M; + mode_M->sort = irms_auxiliary; + mode_M->size = 0; + mode_M->align = 0; + mode_M->sign = 0; mode_M->tv_priv = NULL; /* Tuple */ mode_T = &modes[irm_T]; - mode_T->name = id_from_str("T", 1); - mode_T->code = irm_T; - mode_T->sign = 0; + mode_T->name = id_from_str("T", 1); + mode_T->code = irm_T; + mode_T->sort = irms_auxiliary, + mode_T->size = 0; + mode_T->align = 0; + mode_T->sign = 0; mode_T->tv_priv = NULL; /* boolean */ mode_b = &modes[irm_b]; - mode_b->name = id_from_str("b", 1); - mode_b->code = irm_b; - mode_b->sort = irms_internal_boolean; - mode_b->sign = 0; + mode_b->name = id_from_str("b", 1); + mode_b->code = irm_b; + mode_b->sort = irms_internal_boolean; + mode_b->size = 0; + mode_b->align = 0; + mode_b->sign = 0; mode_b->tv_priv = NULL; /* float */ mode_F = &modes[irm_F]; - mode_F->name = id_from_str("F", 1); - mode_F->code = irm_F; - mode_F->sort = irms_float_number; - mode_F->sign = 1; - mode_F->align = 32; - mode_F->size = 32; + mode_F->name = id_from_str("F", 1); + mode_F->code = irm_F; + mode_F->sort = irms_float_number; + mode_F->sign = 1; + mode_F->align = 32; + mode_F->size = 32; mode_F->tv_priv = NULL; set_mode_values(mode_F); /* double */ mode_D = &modes[irm_D]; - mode_D->name = id_from_str("D", 1); - mode_D->code = irm_D; - mode_D->sort = irms_float_number; - mode_D->sign = 1; - mode_D->align = 32; - mode_D->size = 64; + mode_D->name = id_from_str("D", 1); + mode_D->code = irm_D; + mode_D->sort = irms_float_number; + mode_D->sign = 1; + mode_D->align = 32; + mode_D->size = 64; mode_D->tv_priv = NULL; set_mode_values(mode_D); /* extended */ mode_E = &modes[irm_E]; - mode_E->name = id_from_str("E", 1); - mode_E->code = irm_E; - mode_E->sort = irms_float_number; - mode_E->sign = 1; - mode_E->align = 32; - mode_E->size = 80; + mode_E->name = id_from_str("E", 1); + mode_E->code = irm_E; + mode_E->sort = irms_float_number; + mode_E->sign = 1; + mode_E->align = 32; + mode_E->size = 80; mode_E->tv_priv = NULL; set_mode_values(mode_E); /* signed byte */ mode_Bs = &modes[irm_Bs]; - mode_Bs->name = id_from_str("Bs", 2); - mode_Bs->code = irm_Bs; - mode_Bs->sort = irms_int_number; - mode_Bs->sign = 1; - mode_Bs->align = 8; - mode_Bs->size = 8; + mode_Bs->name = id_from_str("Bs", 2); + mode_Bs->code = irm_Bs; + mode_Bs->sort = irms_int_number; + mode_Bs->sign = 1; + mode_Bs->align = 8; + mode_Bs->size = 8; mode_Bs->tv_priv = NULL; set_mode_values(mode_Bs); /* unsigned byte */ mode_Bu = &modes[irm_Bu]; - mode_Bu->name = id_from_str("Bu", 2); - mode_Bu->code = irm_Bu; - mode_Bu->sort = irms_int_number; - mode_Bu->sign = 0; - mode_Bu->align = 8; - mode_Bu->size = 8; + mode_Bu->name = id_from_str("Bu", 2); + mode_Bu->code = irm_Bu; + mode_Bu->sort = irms_int_number; + mode_Bu->sign = 0; + mode_Bu->align = 8; + mode_Bu->size = 8; mode_Bu->tv_priv = NULL; set_mode_values(mode_Bu); /* signed short integer */ mode_Hs = &modes[irm_Hs]; - mode_Hs->name = id_from_str("Hs", 2); - mode_Hs->code = irm_Hs; - mode_Hs->sort = irms_int_number; - mode_Hs->sign = 1; - mode_Hs->align = 16; - mode_Hs->size = 16; + mode_Hs->name = id_from_str("Hs", 2); + mode_Hs->code = irm_Hs; + mode_Hs->sort = irms_int_number; + mode_Hs->sign = 1; + mode_Hs->align = 16; + mode_Hs->size = 16; mode_Hs->tv_priv = NULL; set_mode_values(mode_Hs); /* unsigned short integer */ mode_Hu = &modes[irm_Hu]; - mode_Hu->name = id_from_str("Hu", 2); - mode_Hu->code = irm_Hu; - mode_Hu->sort = irms_int_number; - mode_Hu->sign = 0; - mode_Hu->align = 16; - mode_Hu->size = 16; + mode_Hu->name = id_from_str("Hu", 2); + mode_Hu->code = irm_Hu; + mode_Hu->sort = irms_int_number; + mode_Hu->sign = 0; + mode_Hu->align = 16; + mode_Hu->size = 16; mode_Hu->tv_priv = NULL; set_mode_values(mode_Hu); /* signed integer */ mode_Is = &modes[irm_Is]; - mode_Is->name = id_from_str("Is", 2); - mode_Is->code = irm_Is; - mode_Is->sort = irms_int_number; - mode_Is->sign = 1; - mode_Is->align = 32; - mode_Is->size = 32; + mode_Is->name = id_from_str("Is", 2); + mode_Is->code = irm_Is; + mode_Is->sort = irms_int_number; + mode_Is->sign = 1; + mode_Is->align = 32; + mode_Is->size = 32; mode_Is->tv_priv = NULL; set_mode_values(mode_Is); /* unsigned integer */ mode_Iu = &modes[irm_Iu]; - mode_Iu->name = id_from_str("Iu", 2); - mode_Iu->code = irm_Iu; - mode_Iu->sort = irms_int_number; - mode_Iu->sign = 0; - mode_Iu->align = 32; - mode_Iu->size = 32; + mode_Iu->name = id_from_str("Iu", 2); + mode_Iu->code = irm_Iu; + mode_Iu->sort = irms_int_number; + mode_Iu->sign = 0; + mode_Iu->align = 32; + mode_Iu->size = 32; mode_Iu->tv_priv = NULL; set_mode_values(mode_Iu); /* signed long integer */ mode_Ls = &modes[irm_Ls]; - mode_Ls->name = id_from_str("Ls", 2); - mode_Ls->code = irm_Ls; - mode_Ls->sort = irms_int_number; - mode_Ls->sign = 1; - mode_Ls->align = 32; - mode_Ls->size = 64; + mode_Ls->name = id_from_str("Ls", 2); + mode_Ls->code = irm_Ls; + mode_Ls->sort = irms_int_number; + mode_Ls->sign = 1; + mode_Ls->align = 32; + mode_Ls->size = 64; mode_Ls->tv_priv = NULL; set_mode_values(mode_Ls); /* unsigned long integer */ mode_Lu = &modes[irm_Lu]; - mode_Lu->name = id_from_str("Lu", 2); - mode_Lu->code = irm_Lu; - mode_Lu->sort = irms_int_number; - mode_Lu->sign = 0; - mode_Lu->align = 32; - mode_Lu->size = 64; + mode_Lu->name = id_from_str("Lu", 2); + mode_Lu->code = irm_Lu; + mode_Lu->sort = irms_int_number; + mode_Lu->sign = 0; + mode_Lu->align = 32; + mode_Lu->size = 64; mode_Lu->tv_priv = NULL; set_mode_values(mode_Lu); /* Character */ mode_C = &modes[irm_C]; - mode_C->name = id_from_str("C", 1); - mode_C->code = irm_C; - mode_C->sort = irms_character; - mode_C->sign = 0; - mode_C->align = 8; - mode_C->size = 8; + mode_C->name = id_from_str("C", 1); + mode_C->code = irm_C; + mode_C->sort = irms_character; + mode_C->sign = 0; + mode_C->align = 8; + mode_C->size = 8; mode_C->tv_priv = NULL; set_mode_values(mode_C); /* Unicode character */ mode_U = &modes[irm_U]; - mode_U->name = id_from_str("U", 1); - mode_U->code = irm_U; - mode_U->sort = irms_character; - mode_U->sign = 0; - mode_U->align = 16; - mode_U->size = 16; + mode_U->name = id_from_str("U", 1); + mode_U->code = irm_U; + mode_U->sort = irms_character; + mode_U->sign = 0; + mode_U->align = 16; + mode_U->size = 16; mode_U->tv_priv = NULL; set_mode_values(mode_U); /* pointer */ mode_P = &modes[irm_P]; - mode_P->name = id_from_str("P", 1); - mode_P->code = irm_P; - mode_P->sort = irms_reference; - mode_P->sign = 0; - mode_P->align = 32; - mode_P->size = 32; + mode_P->name = id_from_str("P", 1); + mode_P->code = irm_P; + mode_P->sort = irms_reference; + mode_P->sign = 0; + mode_P->align = 32; + mode_P->size = 32; mode_P->tv_priv = NULL; num_modes = irm_max; diff --git a/ir/ir/irmode.h b/ir/ir/irmode.h index b085ca129..3f9786098 100644 --- a/ir/ir/irmode.h +++ b/ir/ir/irmode.h @@ -115,10 +115,8 @@ typedef enum { * The new mode or NULL on error. * * @note - * FIRM modes are unique independant of its name. So, you cannot expect - * that the returned mode will have the mode name. * It is allowed to construct the default modes. So, a call - * new_ir_mode("Int", irms_int_number, 32, 4, 1) will return mode_Is. + * new_ir_mode("Is", irms_int_number, 32, 4, 1) will return mode_Is. */ ir_mode *new_ir_mode(const char *name, mode_sort sort, int bit_size, int align, int sign);