jetzt cooler?
[libfirm] / ir / opt / ifconv.c
index 6b465cd..b61edfe 100644 (file)
@@ -29,7 +29,6 @@
 #endif
 
 #include <assert.h>
-#include "dbginfo.h"
 #include "iroptimize.h"
 #include "obst.h"
 #include "irnode_t.h"
@@ -47,7 +46,7 @@
 #include "irdump.h"
 #include "debug.h"
 
-DEBUG_ONLY(firm_dbg_module_t *dbg);
+DEBUG_ONLY(static firm_dbg_module_t *dbg);
 
 /** allow every Psi to be created. */
 static int default_allow_ifconv(ir_node *sel, ir_node* phi_list, int i, int j)
@@ -62,7 +61,7 @@ static int default_allow_ifconv(ir_node *sel, ir_node* phi_list, int i, int j)
 /**
  * Default options.
  */
-static const opt_if_conv_info_t default_info = {
+static const ir_settings_if_conv_t default_info = {
        0,    /* doesn't matter for Psi */
        default_allow_ifconv
 };
@@ -264,7 +263,7 @@ static void prepare_path(ir_node* block, int i, const ir_node* dependency)
 
 static void if_conv_walker(ir_node* block, void* env)
 {
-       opt_if_conv_info_t* opt_info = env;
+       ir_settings_if_conv_t* opt_info = env;
        int arity;
        int i;
 
@@ -435,13 +434,6 @@ static void collect_phis(ir_node *node, void *env)
        }
 }
 
-
-static inline int is_Psi(const ir_node* irn)
-{
-       return get_irn_op(irn) == op_Psi;
-}
-
-
 static void optimise_psis_0(ir_node* psi, void* env)
 {
        ir_node* t;
@@ -519,6 +511,7 @@ static void optimise_psis_1(ir_node* psi, void* env)
 {
        ir_node* t;
        ir_node* f;
+       ir_mode* mode;
 
        (void) env;
 
@@ -529,9 +522,10 @@ static void optimise_psis_1(ir_node* psi, void* env)
 
        DB((dbg, LEVEL_3, "Simplify %+F T=%+F F=%+F\n", psi, t, f));
 
-       if (is_Const(t) && is_Const(f)) {
+       mode = get_irn_mode(psi);
+
+       if (is_Const(t) && is_Const(f) && (mode_is_int(mode))) {
                ir_node* block = get_nodes_block(psi);
-               ir_mode* mode  = get_irn_mode(psi);
                ir_node* c     = get_Psi_cond(psi, 0);
                tarval* tv_t = get_Const_tarval(t);
                tarval* tv_f = get_Const_tarval(f);
@@ -547,10 +541,10 @@ static void optimise_psis_1(ir_node* psi, void* env)
 }
 
 
-void opt_if_conv(ir_graph *irg, const opt_if_conv_info_t *params)
+void opt_if_conv(ir_graph *irg, const ir_settings_if_conv_t *params)
 {
        struct obstack obst;
-       opt_if_conv_info_t p;
+       ir_settings_if_conv_t p;
 
        /* get the parameters */
        p = (params != NULL ? *params : default_info);