firmjni does not like two similar enums.
[libfirm] / ir / ir / irmode.c
index 79cc1c6..d34f3ea 100644 (file)
@@ -24,7 +24,7 @@
 
 # include "irmode_t.h"
 # include "ident.h"
-# include "tv.h"
+# include "tv_t.h"
 # include "obst.h"
 # include "irhooks.h"
 
@@ -131,33 +131,37 @@ static void set_mode_values(ir_mode* mode)
     case irms_character:
     case irms_int_number:
     case irms_float_number:
-      mode->min = get_tarval_min(mode);
-      mode->max = get_tarval_max(mode);
+      mode->min  = get_tarval_min(mode);
+      mode->max  = get_tarval_max(mode);
       mode->null = get_tarval_null(mode);
-      mode->one = get_tarval_one(mode);
+      mode->one  = get_tarval_one(mode);
+      mode->minus_one = get_tarval_minus_one(mode);
       break;
 
     case irms_internal_boolean:
-      mode->min = tarval_b_false;
-      mode->max = tarval_b_true;
+      mode->min  = tarval_b_false;
+      mode->max  = tarval_b_true;
       mode->null = tarval_b_false;
-      mode->one = tarval_b_true;
+      mode->one  = tarval_b_true;
+      mode->minus_one = tarval_bad;
       break;
 
     case irms_reference:
-      mode->min = tarval_bad;
-      mode->max = tarval_bad;
-      mode->null = (get_mode_modecode(mode) == irm_P) ? tarval_P_void : tarval_bad;
-      mode->one = tarval_bad;
+      mode->min  = tarval_bad;
+      mode->max  = tarval_bad;
+      mode->null = get_tarval_null(mode);
+      mode->one  = tarval_bad;
+      mode->minus_one = tarval_bad;
       break;
 
     case irms_auxiliary:
     case irms_memory:
     case irms_control_flow:
-      mode->min = tarval_bad;
-      mode->max = tarval_bad;
+      mode->min  = tarval_bad;
+      mode->max  = tarval_bad;
       mode->null = tarval_bad;
-      mode->one = tarval_bad;
+      mode->one  = tarval_bad;
+      mode->minus_one = tarval_bad;
       break;
   }
 }
@@ -228,12 +232,12 @@ INLINE ir_mode *get_modeBAD(void) { ANNOUNCE(); return mode_BAD; }
 
 ir_mode *(get_modeP_mach)(void) {
   ANNOUNCE();
-  return __get_modeP_mach();
+  return _get_modeP_mach();
 }
 
 void (set_modeP_mach)(ir_mode *p) {
   ANNOUNCE();
-  __set_modeP_mach(p);
+  _set_modeP_mach(p);
 }
 
 /**
@@ -241,7 +245,7 @@ void (set_modeP_mach)(ir_mode *p) {
  *
  * @param new_mode  The new mode template.
  */
-static ir_mode *register_mode(const ir_modenew_mode)
+static ir_mode *register_mode(const ir_mode *new_mode)
 {
   ir_mode *mode = NULL;
 
@@ -249,7 +253,7 @@ static ir_mode *register_mode(const ir_mode* new_mode)
   assert(new_mode);
 
   /* copy mode struct to modes array */
-  mode = (ir_mode*)obstack_copy(&modes, new_mode, sizeof(ir_mode));
+  mode = (ir_mode *)obstack_copy(&modes, new_mode, sizeof(*mode));
 
   mode->kind = k_ir_mode;
   if (num_modes >= irm_max) mode->code = num_modes;
@@ -367,14 +371,14 @@ modecode
 (get_mode_modecode)(const ir_mode *mode)
 {
   ANNOUNCE();
-  return __get_mode_modecode(mode);
+  return _get_mode_modecode(mode);
 }
 
 ident *
 (get_mode_ident)(const ir_mode *mode)
 {
   ANNOUNCE();
-  return __get_mode_ident(mode);
+  return _get_mode_ident(mode);
 }
 
 const char *
@@ -388,27 +392,27 @@ mode_sort
 (get_mode_sort)(const ir_mode* mode)
 {
   ANNOUNCE();
-  return __get_mode_sort(mode);
+  return _get_mode_sort(mode);
 }
 
 int
 (get_mode_size_bits)(const ir_mode *mode)
 {
   ANNOUNCE();
-  return __get_mode_size_bits(mode);
+  return _get_mode_size_bits(mode);
 }
 
 int
 (get_mode_size_bytes)(const ir_mode *mode) {
   ANNOUNCE();
-  return __get_mode_size_bytes(mode);
+  return _get_mode_size_bytes(mode);
 }
 
 int
 (get_mode_sign)(const ir_mode *mode)
 {
   ANNOUNCE();
-  return __get_mode_sign(mode);
+  return _get_mode_sign(mode);
 }
 
 int
@@ -425,25 +429,25 @@ int
  */
 unsigned int
 (get_mode_modulo_shift)(const ir_mode *mode) {
-  return __get_mode_modulo_shift(mode);
+  return _get_mode_modulo_shift(mode);
 }
 
 unsigned int
 (get_mode_n_vector_elems)(const ir_mode *mode) {
-  return __get_mode_vector_elems(mode);
+  return _get_mode_vector_elems(mode);
 }
 
 void *
 (get_mode_link)(const ir_mode *mode)
 {
   ANNOUNCE();
-  return __get_mode_link(mode);
+  return _get_mode_link(mode);
 }
 
 void
 (set_mode_link)(ir_mode *mode, void *l)
 {
-  __set_mode_link(mode, l);
+  _set_mode_link(mode, l);
 }
 
 tarval *
@@ -490,6 +494,17 @@ get_mode_one (ir_mode *mode)
   return mode->one;
 }
 
+tarval *
+get_mode_minus_one (ir_mode *mode)
+{
+  ANNOUNCE();
+  assert(mode);
+  assert(get_mode_modecode(mode) < num_modes);
+  assert(mode_is_data(mode));
+
+  return mode->minus_one;
+}
+
 tarval *
 get_mode_infinite(ir_mode *mode)
 {
@@ -523,73 +538,73 @@ is_mode (void *thing) {
 int
 (mode_is_signed)(const ir_mode *mode) {
   ANNOUNCE();
-  return __mode_is_signed(mode);
+  return _mode_is_signed(mode);
 }
 
 int
 (mode_is_float)(const ir_mode *mode) {
   ANNOUNCE();
-  return __mode_is_float(mode);
+  return _mode_is_float(mode);
 }
 
 int
 (mode_is_int)(const ir_mode *mode) {
   ANNOUNCE();
-  return __mode_is_int(mode);
+  return _mode_is_int(mode);
 }
 
 int
 (mode_is_character)(const ir_mode *mode) {
   ANNOUNCE();
-  return __mode_is_character(mode);
+  return _mode_is_character(mode);
 }
 
 int
 (mode_is_reference)(const ir_mode *mode) {
   ANNOUNCE();
-  return __mode_is_reference(mode);
+  return _mode_is_reference(mode);
 }
 
 int
 (mode_is_num)(const ir_mode *mode) {
   ANNOUNCE();
-  return __mode_is_num(mode);
+  return _mode_is_num(mode);
 }
 
 int
 (mode_is_numP)(const ir_mode *mode) {
   ANNOUNCE();
-  return __mode_is_numP(mode);
+  return _mode_is_numP(mode);
 }
 
 int
 (mode_is_data)(const ir_mode *mode) {
   ANNOUNCE();
-  return __mode_is_data(mode);
+  return _mode_is_data(mode);
 }
 
 int
 (mode_is_datab)(const ir_mode *mode) {
   ANNOUNCE();
-  return __mode_is_datab(mode);
+  return _mode_is_datab(mode);
 }
 
 int
 (mode_is_dataM)(const ir_mode *mode) {
   ANNOUNCE();
-  return __mode_is_dataM(mode);
+  return _mode_is_dataM(mode);
 }
 
 int
 (mode_is_float_vector)(const ir_mode *mode) {
   ANNOUNCE();
-  return __mode_is_float_vector(mode);
+  return _mode_is_float_vector(mode);
 }
 
 int
 (mode_is_int_vector)(const ir_mode *mode) {
   ANNOUNCE();
-  return __mode_is_int_vector(mode);
+  return _mode_is_int_vector(mode);
 }
 
 /* Returns true if sm can be converted to lm without loss. */
@@ -887,7 +902,7 @@ init_mode (void)
 
   mode_P = register_mode(&newmode);
 
-  /* set the machine specific modes to the predifined ones */
+  /* set the machine specific modes to the predefined ones */
   mode_P_mach = mode_P;
 }