fixed const mismatch
[libfirm] / ir / opt / scalar_replace.c
index e820945..881d199 100644 (file)
@@ -64,7 +64,7 @@ typedef struct _path_t {
 
 typedef struct _scalars_t {
   entity *ent;                 /**< A entity for scalar replacement. */
-  type *ent_owner;             /**< The owner of this entity. */
+  ir_type *ent_owner;          /**< The owner of this entity. */
 } scalars_t;
 
 
@@ -126,21 +126,18 @@ static int is_const_sel(ir_node *sel) {
   return 1;
 }
 
-/**
+/*
  * Returns non-zero, if the address of an entity
  * represented by a Sel node (or it's successor Sels) is taken.
- *
- * @param sel  the Sel node
  */
-static int is_address_taken(ir_node *sel)
+int is_address_taken(ir_node *sel)
 {
-  int i, n;
+  int i;
 
   if (! is_const_sel(sel))
     return 1;
 
-  n = get_irn_n_outs(sel);
-  for (i = 0; i < n; ++i) {
+  for (i = get_irn_n_outs(sel) - 1; i >= 0; --i) {
     ir_node *succ = get_irn_out(sel, i);
 
     switch (get_irn_opcode(succ)) {
@@ -192,7 +189,7 @@ static void link_all_leave_sels(entity *ent, ir_node *sel)
   for (i = 0; i < n; ++i) {
     ir_node *succ = get_irn_out(sel, i);
 
-    if (get_irn_op(succ) == op_Sel) {
+    if (is_Sel(succ)) {
       link_all_leave_sels(ent, succ);
       flag = 0;
     }
@@ -255,7 +252,7 @@ static int find_possible_replacements(ir_graph *irg)
   for (i = 0; i < n; ++i) {
     ir_node *succ = get_irn_out(irg_frame, i);
 
-    if (get_irn_op(succ) == op_Sel) {
+    if (is_Sel(succ)) {
       entity *ent = get_Sel_entity(succ);
       set_entity_link(ent, NULL);
     }
@@ -269,9 +266,9 @@ static int find_possible_replacements(ir_graph *irg)
   for (i = 0; i < n; ++i) {
     ir_node *succ = get_irn_out(irg_frame, i);
 
-    if (get_irn_op(succ) == op_Sel) {
+    if (is_Sel(succ)) {
       entity *ent = get_Sel_entity(succ);
-      type *ent_type;
+      ir_type *ent_type;
 
       if (get_entity_link(ent) == ADDRESS_TAKEN)
         continue;
@@ -314,7 +311,7 @@ static path_t *find_path(ir_node *sel, unsigned len)
   n    = get_Sel_n_indexs(sel);
   len += n + 1;
 
-  if (get_irn_op(pred) != op_Sel) {
+  if (! is_Sel(pred)) {
     /* we found the root */
 
     res = xmalloc(sizeof(*res) + (len - 1) * sizeof(res->path));
@@ -437,7 +434,7 @@ static void handle_first(ir_node *node, void *ctx)
     /* a load, check if we can resolve it */
     adr = get_Load_ptr(node);
 
-    if (get_irn_op(adr) != op_Sel)
+    if (! is_Sel(adr))
       return;
 
     if (! pset_find_ptr(env->sels, adr))
@@ -473,7 +470,7 @@ static void handle_first(ir_node *node, void *ctx)
     /* a Store always can be replaced */
     adr = get_Store_ptr(node);
 
-    if (get_irn_op(adr) != op_Sel)
+    if (! is_Sel(adr))
       return;
 
     if (! pset_find_ptr(env->sels, adr))
@@ -677,7 +674,7 @@ void scalar_replacement_opt(ir_graph *irg)
   ir_mode   **modes;
   set       *set_ent;
   pset      *sels;
-  type      *ent_type;
+  ir_type   *ent_type;
   ir_graph  *rem;
 
   if (! get_opt_scalar_replacement())
@@ -706,7 +703,7 @@ void scalar_replacement_opt(ir_graph *irg)
     for (i = 0 ; i < get_irn_n_outs(irg_frame); i++) {
       ir_node *succ = get_irn_out(irg_frame, i);
 
-      if (get_irn_op(succ) == op_Sel) {
+      if (is_Sel(succ)) {
         entity *ent = get_Sel_entity(succ);
 
         if (get_entity_link(ent) == NULL || get_entity_link(ent) == ADDRESS_TAKEN)