Reverted changes from 25529
[libfirm] / ir / opt / combo.c
index 1ab9371..af5bc66 100644 (file)
@@ -112,6 +112,7 @@ struct opcode_key_t {
                long      proj;   /**< For Proj nodes, its proj number */
                ir_entity *ent;   /**< For Sel Nodes, its entity */
                int       intVal; /**< For Conv/Div Nodes: strict/remainderless */
+               unsigned  uintVal;/**< for Builtin: the kind */
                ir_node   *block; /**< for Block: itself */
                void      *ptr;   /**< generic pointer for hash/cmp */
        } u;
@@ -295,12 +296,15 @@ static void check_opcode(const partition_t *Z) {
                        case iro_Load:
                                key.mode = get_Load_mode(irn);
                                break;
+                       case iro_Builtin:
+                               key.u.intVal = get_Builtin_kind(irn);
+                               break;
                        default:
                                break;
                        }
                        first = 0;
                } else {
-                       assert(key.code  == get_irn_opcode(irn));
+                       assert((unsigned)key.code  == get_irn_opcode(irn));
                        assert(key.mode  == get_irn_mode(irn));
                        assert(key.arity == get_irn_arity(irn));
 
@@ -323,6 +327,9 @@ static void check_opcode(const partition_t *Z) {
                        case iro_Load:
                                assert(key.mode == get_Load_mode(irn));
                                break;
+                       case iro_Builtin:
+                               assert(key.u.intVal == (int) get_Builtin_kind(irn));
+                               break;
                        default:
                                break;
                        }
@@ -578,7 +585,7 @@ static int cmp_opcode(const void *elt, const void *key, size_t size) {
        return o1->code != o2->code || o1->mode != o2->mode ||
               o1->arity != o2->arity ||
               o1->u.proj != o2->u.proj ||
-              o1->u.intVal != o2->u.intVal ||
+              o1->u.intVal != o2->u.intVal || /* this already checks uIntVal */
               o1->u.ptr != o2->u.ptr;
 }  /* cmp_opcode */
 
@@ -1680,6 +1687,9 @@ static void *lambda_opcode(const node_t *node, environment_t *env) {
        case iro_Load:
                key.mode = get_Load_mode(irn);
                break;
+       case iro_Builtin:
+               key.u.intVal = get_Builtin_kind(irn);
+               break;
        default:
                break;
        }
@@ -2366,7 +2376,7 @@ static void compute_Proj_Cond(node_t *node, ir_node *cond) {
                        node->type.tv = tarval_reachable;
                } else if (selector->type.tv == tarval_top) {
                        if (tarval_UNKNOWN == tarval_top &&
-                           pnc == get_Cond_defaultProj(cond)) {
+                           pnc == get_Cond_default_proj(cond)) {
                                /* a switch based of Top is always "default" */
                                node->type.tv = tarval_reachable;
                        } else {
@@ -2374,7 +2384,7 @@ static void compute_Proj_Cond(node_t *node, ir_node *cond) {
                        }
                } else {
                        long value = get_tarval_long(selector->type.tv);
-                       if (pnc == get_Cond_defaultProj(cond)) {
+                       if (pnc == get_Cond_default_proj(cond)) {
                                /* default switch, have to check ALL other cases */
                                int i;
 
@@ -3532,6 +3542,7 @@ void combo(ir_graph *irg) {
                set_irg_extblk_inconsistent(irg);
                set_irg_doms_inconsistent(irg);
                set_irg_loopinfo_inconsistent(irg);
+               set_irg_entity_usage_state(irg, ir_entity_usage_not_computed);
        }
 
        ir_free_resources(irg, IR_RESOURCE_IRN_LINK | IR_RESOURCE_PHI_LIST);