trverify: cleanup, check irg.entity == entity.irg
[libfirm] / ir / opt / funccall.c
index f4cdb39..a5cddd6 100644 (file)
@@ -21,7 +21,6 @@
  * @file
  * @brief   Optimization of function calls.
  * @author  Michael Beck
- * @version $Id$
  */
 #include "config.h"
 
@@ -89,8 +88,8 @@ static void collect_const_and_pure_calls(ir_node *node, void *env)
                /* set the link to NULL for all non-const/pure calls */
                set_irn_link(call, NULL);
                ptr = get_Call_ptr(call);
-               if (is_Global(ptr)) {
-                       ent = get_Global_entity(ptr);
+               if (is_SymConst_addr_ent(ptr)) {
+                       ent = get_SymConst_entity(ptr);
 
                        prop = get_entity_additional_properties(ent);
                        if ((prop & (mtp_property_const|mtp_property_pure)) == 0)
@@ -113,7 +112,7 @@ static void collect_const_and_pure_calls(ir_node *node, void *env)
                        or_prop  = 0;
                        for (i = 0; i < n_callees; ++i) {
                                ent = get_Call_callee(call, i);
-                               if (ent == unknown_entity) {
+                               if (is_unknown_entity(ent)) {
                                        /* we don't know which entity is called here */
                                        return;
                                }
@@ -238,12 +237,10 @@ static void fix_const_call_lists(ir_graph *irg, env_t *ctx)
                }
        }
 
-       /* changes were done ... */
-       set_irg_loopinfo_state(irg, loopinfo_cf_inconsistent);
-
        if (exc_changed) {
                /* ... including exception edges */
-               clear_irg_state(irg, IR_GRAPH_STATE_CONSISTENT_DOMINANCE);
+               clear_irg_state(irg, IR_GRAPH_STATE_CONSISTENT_DOMINANCE
+                                  | IR_GRAPH_STATE_CONSISTENT_LOOPINFO);
        }
 }  /* fix_const_call_list */
 
@@ -264,8 +261,8 @@ static void collect_nothrow_calls(ir_node *node, void *env)
                /* set the link to NULL for all non-const/pure calls */
                set_irn_link(call, NULL);
                ptr = get_Call_ptr(call);
-               if (is_Global(ptr)) {
-                       ent = get_Global_entity(ptr);
+               if (is_SymConst_addr_ent(ptr)) {
+                       ent = get_SymConst_entity(ptr);
 
                        prop = get_entity_additional_properties(ent);
                        if ((prop & mtp_property_nothrow) == 0)
@@ -287,7 +284,7 @@ static void collect_nothrow_calls(ir_node *node, void *env)
                        prop = mtp_property_nothrow;
                        for (i = 0; i < n_callees; ++i) {
                                ent = get_Call_callee(call, i);
-                               if (ent == unknown_entity) {
+                               if (is_unknown_entity(ent)) {
                                        /* we don't know which entity is called here */
                                        return;
                                }
@@ -373,11 +370,10 @@ static void fix_nothrow_call_list(ir_graph *irg, ir_node *call_list, ir_node *pr
        }
 
        /* changes were done ... */
-       set_irg_loopinfo_state(irg, loopinfo_cf_inconsistent);
-
        if (exc_changed) {
                /* ... including exception edges */
-               clear_irg_state(irg, IR_GRAPH_STATE_CONSISTENT_DOMINANCE);
+               clear_irg_state(irg, IR_GRAPH_STATE_CONSISTENT_DOMINANCE
+                                  | IR_GRAPH_STATE_CONSISTENT_LOOPINFO);
        }
 }  /* fix_nothrow_call_list */
 
@@ -728,8 +724,8 @@ static int is_stored(const ir_node *n)
                        break;
                case iro_Call:
                        ptr = get_Call_ptr(succ);
-                       if (is_Global(ptr)) {
-                               ir_entity *ent = get_Global_entity(ptr);
+                       if (is_SymConst_addr_ent(ptr)) {
+                               ir_entity *ent = get_SymConst_entity(ptr);
                                size_t    i;
 
                                /* we know the called entity */
@@ -841,9 +837,9 @@ static mtp_additional_properties check_nothrow_or_malloc(ir_graph *irg, int top)
                                        } else if (is_Call(res)) {
                                                ir_node *ptr = get_Call_ptr(res);
 
-                                               if (is_Global(ptr)) {
+                                               if (is_SymConst_addr_ent(ptr)) {
                                                        /* a direct call */
-                                                       ir_entity *ent    = get_Global_entity(ptr);
+                                                       ir_entity *ent    = get_SymConst_entity(ptr);
                                                        ir_graph  *callee = get_entity_irg(ent);
 
                                                        if (callee == irg) {
@@ -869,7 +865,7 @@ static mtp_additional_properties check_nothrow_or_malloc(ir_graph *irg, int top)
 
                                                        for (i = 0; i < n_callees; ++i) {
                                                                ir_entity *ent = get_Call_callee(res, i);
-                                                               if (ent == unknown_entity) {
+                                                               if (is_unknown_entity(ent)) {
                                                                        /* we don't know which entity is called here */
                                                                        curr_prop &= ~mtp_property_malloc;
                                                                        break;
@@ -897,9 +893,9 @@ static mtp_additional_properties check_nothrow_or_malloc(ir_graph *irg, int top)
                        if (is_Call(pred)) {
                                ir_node *ptr = get_Call_ptr(pred);
 
-                               if (is_Global(ptr)) {
+                               if (is_SymConst_addr_ent(ptr)) {
                                        /* a direct call */
-                                       ir_entity *ent    = get_Global_entity(ptr);
+                                       ir_entity *ent    = get_SymConst_entity(ptr);
                                        ir_graph  *callee = get_entity_irg(ent);
 
                                        if (callee == irg) {
@@ -927,7 +923,7 @@ static mtp_additional_properties check_nothrow_or_malloc(ir_graph *irg, int top)
 
                                        for (i = 0; i < n_callees; ++i) {
                                                ir_entity *ent = get_Call_callee(pred, i);
-                                               if (ent == unknown_entity) {
+                                               if (is_unknown_entity(ent)) {
                                                        /* we don't know which entity is called here */
                                                        curr_prop &= ~mtp_property_nothrow;
                                                        break;
@@ -985,7 +981,7 @@ static mtp_additional_properties check_nothrow_or_malloc(ir_graph *irg, int top)
 static void check_for_possible_endless_loops(ir_graph *irg)
 {
        ir_loop *root_loop;
-       assure_cf_loop(irg);
+       assure_loopinfo(irg);
 
        root_loop = get_irg_loop(irg);
        if (root_loop->flags & loop_outer_loop)