ir_mode mode_tmpl;
ir_mode *mode;
+ mode_tmpl.name = new_id_from_str(name);
+ mode_tmpl.sort = sort;
+ mode_tmpl.size = bit_size;
+ mode_tmpl.align = align;
+ mode_tmpl.sign = sign ? 1 : 0;
+ mode_tmpl.arithmetic = arithmetic;
+ mode_tmpl.link = NULL;
+ mode_tmpl.tv_priv = NULL;
+
+ mode = find_mode(&mode_tmpl);
+ if (mode)
+ {
+ return mode;
+ }
+
/* sanity checks */
switch (sort)
{
case irms_internal_boolean:
assert(0 && "internal modes cannot be user defined");
return NULL;
- break;
case irms_float_number:
assert(0 && "not yet implemented");
return NULL;
- break;
case irms_int_number:
case irms_reference:
case irms_character:
- break;
- }
- mode_tmpl.name = new_id_from_str(name);
- mode_tmpl.sort = sort;
- mode_tmpl.size = bit_size;
- mode_tmpl.align = align;
- mode_tmpl.sign = sign ? 1 : 0;
- mode_tmpl.arithmetic = arithmetic;
- mode_tmpl.link = NULL;
- mode_tmpl.tv_priv = NULL;
-
- /* first check if there already is a matching mode */
- mode = find_mode(&mode_tmpl);
- if (mode)
- {
- return mode;
- }
- else
- {
- return register_mode(&mode_tmpl);
+ return register_mode(&mode_tmpl);
}
+ return NULL; /* to shut up gcc */
}
/* Functions for the direct access to all attributes od a ir_mode */