Renamed get_Cond_defaultProj() to get_Cond_default_proj() for consistency. Added...
[libfirm] / ir / ana / field_temperature.c
index fc147cd..ed4095f 100644 (file)
@@ -1,15 +1,33 @@
 /*
- * Project:     libFIRM
- * File name:   ir/ana/field_temperature.c
- * Purpose:     Compute an estimate of field temperature, i.e., field access heuristic.
- * Author:      Goetz Lindenmaier
- * Modified by:
- * Created:     21.7.2004
- * CVS-ID:      $Id$
- * Copyright:   (c) 2004 Universität Karlsruhe
- * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
+ * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
+ *
+ * This file is part of libFirm.
+ *
+ * This file may be distributed and/or modified under the terms of the
+ * GNU General Public License version 2 as published by the Free Software
+ * Foundation and appearing in the file LICENSE.GPL included in the
+ * packaging of this file.
+ *
+ * Licensees holding valid libFirm Professional Edition licenses may use
+ * this file in accordance with the libFirm Commercial License.
+ * Agreement provided with the Software.
+ *
+ * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+ * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
  */
 
+/**
+ * @file
+ * @brief     Compute an estimate of field temperature, i.e., field access heuristic.
+ * @author    Goetz Lindenmaier
+ * @date      21.7.2004
+ * @version   $Id$
+ */
+#include "config.h"
+
+#ifdef INTERPROCEDURAL_VIEW
+
 #include <math.h>
 
 #include "field_temperature.h"
@@ -22,6 +40,7 @@
 #include "irprog_t.h"
 #include "entity_t.h"
 #include "irgwalk.h"
+#include "error.h"
 
 #include "array.h"
 
 
 /* The entities that can be accessed by this Sel node. */
 int get_Sel_n_accessed_entities(ir_node *sel) {
+  (void) sel;
   return 1;
 }
 
-entity *get_Sel_accessed_entity(ir_node *sel, int pos) {
+ir_entity *get_Sel_accessed_entity(ir_node *sel, int pos) {
+  (void) pos;
   return get_Sel_entity(sel);
 }
 
@@ -117,6 +138,7 @@ double get_type_estimated_n_instances(ir_type *tp) {
 }
 
 double get_type_estimated_mem_consumption_bytes(ir_type *tp) {
+  (void) tp;
   assert(0);
   return 0.0;
 }
@@ -137,7 +159,7 @@ int get_type_estimated_n_fields(ir_type *tp) {
   case tpo_struct: {
     int i, n_mem = get_compound_n_members(tp);
     for (i = 0; i < n_mem; ++i) {
-      entity *mem = get_compound_member(tp, i);
+      ir_entity *mem = get_compound_member(tp, i);
       if (get_entity_allocation(mem) == allocation_automatic) {
        s += get_type_estimated_n_fields(get_entity_type(mem));
       }
@@ -147,14 +169,15 @@ int get_type_estimated_n_fields(ir_type *tp) {
   case tpo_array: {
     long n_elt = DEFAULT_N_ARRAY_ELEMENTS;
     assert(get_array_n_dimensions(tp) == 1 && "other not implemented");
-    if ((get_irn_op(get_array_lower_bound(tp, 0)) == op_Const) &&
-       (get_irn_op(get_array_upper_bound(tp, 0)) == op_Const)   ) {
+    if (is_Const(get_array_lower_bound(tp, 0)) &&
+        is_Const(get_array_upper_bound(tp, 0))) {
       n_elt = get_array_upper_bound_int(tp, 0) - get_array_upper_bound_int(tp, 0);
     }
     s = n_elt;
   } break;
 
-  default: DDMT(tp); assert(0);
+  default:
+    panic("Unsupported type in get_type_estimated_n_fields %+F", tp);
   }
 
   return s;
@@ -177,7 +200,7 @@ int get_type_estimated_size_bytes(ir_type *tp) {
   case tpo_struct: {
     int i, n_mem = get_compound_n_members(tp);
     for (i = 0; i < n_mem; ++i) {
-      entity *mem = get_compound_member(tp, i);
+      ir_entity *mem = get_compound_member(tp, i);
       s += get_type_estimated_size_bytes(get_entity_type(mem));
 
       if (get_entity_allocation(mem) == allocation_automatic) {
@@ -189,15 +212,15 @@ int get_type_estimated_size_bytes(ir_type *tp) {
     int elt_s = get_type_estimated_size_bytes(get_array_element_type(tp));
     long n_elt = DEFAULT_N_ARRAY_ELEMENTS;
     assert(get_array_n_dimensions(tp) == 1 && "other not implemented");
-    if ((get_irn_op(get_array_lower_bound(tp, 0)) == op_Const) &&
-       (get_irn_op(get_array_upper_bound(tp, 0)) == op_Const)   ) {
+    if (is_Const(get_array_lower_bound(tp, 0)) &&
+        is_Const(get_array_upper_bound(tp, 0))) {
       n_elt = get_array_upper_bound_int(tp, 0) - get_array_lower_bound_int(tp, 0);
     }
     s = n_elt * elt_s;
     break;
   }
 
-  default: DDMT(tp); assert(0);
+  default: assert(0);
   }
 
   return s;
@@ -265,7 +288,7 @@ double get_class_estimated_dispatch_reads (ir_type *clss) {
   int i, n_mems = get_class_n_members(clss);
   double n_calls = 0;
   for (i = 0; i < n_mems; ++i) {
-    entity *mem = get_class_member(clss, i);
+    ir_entity *mem = get_class_member(clss, i);
     n_calls += get_entity_estimated_n_dyncalls(mem);
   }
   return n_calls;
@@ -276,62 +299,60 @@ double get_class_estimated_n_dyncalls(ir_type *clss) {
          get_class_estimated_dispatch_writes(clss);
 }
 
-double get_entity_estimated_n_loads(entity *ent) {
+double get_entity_estimated_n_loads(ir_entity *ent) {
   int i, n_acc = get_entity_n_accesses(ent);
   double n_loads = 0;
   for (i = 0; i < n_acc; ++i) {
     ir_node *acc = get_entity_access(ent, i);
-    if (get_irn_op(acc) == op_Load) {
+    if (is_Load(acc)) {
       n_loads += get_irn_final_cost(acc);
     }
   }
   return n_loads;
 }
 
-double get_entity_estimated_n_stores(entity *ent) {
+double get_entity_estimated_n_stores(ir_entity *ent) {
   int i, n_acc = get_entity_n_accesses(ent);
   double n_stores = 0;
   for (i = 0; i < n_acc; ++i) {
     ir_node *acc = get_entity_access(ent, i);
-    if (get_irn_op(acc) == op_Store)
+    if (is_Store(acc))
       n_stores += get_irn_final_cost(acc);
   }
   return n_stores;
 }
 
 /* @@@ Should we evaluate the callee array?  */
-double get_entity_estimated_n_calls(entity *ent) {
+double get_entity_estimated_n_calls(ir_entity *ent) {
   int i, n_acc = get_entity_n_accesses(ent);
   double n_calls = 0;
   for (i = 0; i < n_acc; ++i) {
     ir_node *acc = get_entity_access(ent, i);
-    if (get_irn_op(acc) == op_Call)
-
+    if (is_Call(acc))
       n_calls += get_irn_final_cost(acc);
   }
   return n_calls;
 }
 
-double get_entity_estimated_n_dyncalls(entity *ent) {
+double get_entity_estimated_n_dyncalls(ir_entity *ent) {
   int i, n_acc = get_entity_n_accesses(ent);
   double n_calls = 0;
   for (i = 0; i < n_acc; ++i) {
     ir_node *acc = get_entity_access(ent, i);
 
     /* Call->Sel(ent) combination */
-    if ((get_irn_op(acc) == op_Call)  &&
-       (get_irn_op(get_Call_ptr(acc)) == op_Sel)) {
+    if (is_Call(acc) && is_Sel(get_Call_ptr(acc))) {
       n_calls += get_irn_final_cost(acc);
 
     /* MemOp->Sel combination for static, overwritten entities */
-    } else if (is_memop(acc) && (get_irn_op(get_memop_ptr(acc)) == op_Sel)) {
-      entity *ent = get_Sel_entity(get_memop_ptr(acc));
+    } else if (is_memop(acc) && is_Sel(get_memop_ptr(acc))) {
+      ir_entity *ent = get_Sel_entity(get_memop_ptr(acc));
       if (is_Class_type(get_entity_owner(ent))) {
-       /* We might call this for inner entities in compounds. */
-       if (get_entity_n_overwrites(ent) > 0 ||
-           get_entity_n_overwrittenby(ent) > 0) {
-         n_calls += get_irn_final_cost(acc);
-       }
+        /* We might call this for inner entities in compounds. */
+        if (get_entity_n_overwrites(ent) > 0 ||
+            get_entity_n_overwrittenby(ent) > 0) {
+          n_calls += get_irn_final_cost(acc);
+        }
       }
     }
 
@@ -339,6 +360,9 @@ double get_entity_estimated_n_dyncalls(entity *ent) {
   return n_calls;
 }
 
+#if 0
+/* Move this to the jack compiler */
+
 /* ------------------------------------------------------------------------- */
 /* Auxiliary                                                                 */
 /* ------------------------------------------------------------------------- */
@@ -367,7 +391,7 @@ int is_jack_rts_class(ir_type *t) {
 
 #include "entity_t.h"  // for the assertion.
 
-int is_jack_rts_entity(entity *e) {
+int is_jack_rts_entity(ir_entity *e) {
   ident *name;
 
   assert(e->ld_name);
@@ -375,3 +399,7 @@ int is_jack_rts_entity(entity *e) {
 
   return is_jack_rts_name(name);
 }
+
+#endif /* if 0 */
+
+#endif