fix some warnings
[libfirm] / ir / ir / irmode.c
index a21ca88..08bca22 100644 (file)
  */
 #include "config.h"
 
-#ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-#ifdef HAVE_STRING_H
-# include <string.h>
-#endif
+#include <stdlib.h>
+#include <string.h>
 
-# include <stddef.h>
+#include <stddef.h>
 
-# include "irprog_t.h"
-# include "irmode_t.h"
-# include "ident.h"
-# include "tv_t.h"
-# include "obst.h"
-# include "irhooks.h"
-# include "irtools.h"
-# include "array.h"
+#include "irprog_t.h"
+#include "irmode_t.h"
+#include "ident.h"
+#include "tv_t.h"
+#include "obst.h"
+#include "irhooks.h"
+#include "irtools.h"
+#include "array.h"
+#include "error.h"
 
 /** Obstack to hold all modes. */
 static struct obstack modes;
@@ -52,6 +49,22 @@ static int num_modes = 0;
 /** The list of all currently existing modes. */
 static ir_mode **mode_list;
 
+const char *get_mode_arithmetic_name(ir_mode_arithmetic ari)
+{
+#define X(a)    case a: return #a
+       switch (ari) {
+               X(irma_uninitialized);
+               X(irma_none);
+               X(irma_twos_complement);
+               X(irma_ones_complement);
+               X(irma_int_BCD);
+               X(irma_ieee754);
+               X(irma_float_BCD);
+               default: return "<unknown>";
+       }
+#undef X
+}
+
 /**
  * Compare modes that don't need to have their code field
  * correctly set
@@ -748,7 +761,9 @@ void init_mode(void) {
        newmode.name    = new_id_from_chars("E", 1);
        newmode.code    = irm_E;
        newmode.sign    = 1;
-       newmode.size    = 80;
+       /* note that the tarval module is calculating with 80 bits, but we use
+        * 96 bits, as that is what will be stored to memory by most hardware */
+       newmode.size    = 96;
 
        mode_E = register_mode(&newmode);