Fixed optimization of Div/Mod/DivMod nodes
[libfirm] / ir / ir / irdumptxt.c
index 56a43a3..5c0336d 100644 (file)
@@ -31,7 +31,7 @@
 #include "entity_t.h"
 #include "trouts.h"
 #include "irgwalk.h"
-#include "tv.h"
+#include "tv_t.h"
 
 #include "irdom.h"
 #include "field_temperature.h"
@@ -60,7 +60,7 @@ static FILE *text_open (const char *basename, const char * suffix1, const char *
   fname = malloc (strlen(basename)*2 + strlen(suffix1) + strlen(suffix2) + 5); /* *2: space for excapes. */
 
   j = 0;
-  for (i = 0; i < len; ++i) {  /* replase '/' in the name: escape by @. */
+  for (i = 0; i < len; ++i) {  /* replace '/' in the name: escape by @. */
     if (basename[i] == '/') {
       fname[j] = '@'; j++; fname[j] = '1'; j++;
     } else if (basename[i] == '@') {
@@ -102,8 +102,8 @@ int dump_irnode_to_file(FILE *F, ir_node *n) {
   if (get_irn_pinned(n) == op_pin_state_floats &&
       get_irg_pinned(get_irn_irg(n)) == op_pin_state_floats) {
     fprintf(F, "  node was pinned in ");
-    dump_node_opcode(F, get_nodes_block(n));
-    fprintf(F, " %ld\n", get_irn_node_nr(get_nodes_block(n)));
+    dump_node_opcode(F, get_irn_n(n, -1));
+    fprintf(F, " %ld\n", get_irn_node_nr(get_irn_n(n, -1)));
   }
 
   fprintf(F, "  arity:   %d\n", get_irn_intra_arity(n));
@@ -111,8 +111,8 @@ int dump_irnode_to_file(FILE *F, ir_node *n) {
   fprintf(F, "  pred nodes: \n");
   if (!is_Block(n)) {
     fprintf(F, "    -1:    ");
-    dump_node_opcode(F, get_nodes_block(n));
-    fprintf(F, " %ld\n", get_irn_node_nr(get_nodes_block(n)));
+    dump_node_opcode(F, get_irn_n(n, -1));
+    fprintf(F, " %ld\n", get_irn_node_nr(get_irn_n(n, -1)));
   }
   for ( i = 0; i < get_irn_intra_arity(n); ++i) {
     fprintf(F, "     %d: %s ", i, is_intra_backedge(n, i) ? "be" : "  ");
@@ -473,24 +473,42 @@ void    dump_entity_to_file_prefix (FILE *F, entity *ent, char *prefix, unsigned
 
     if (is_Class_type(get_entity_owner(ent))) {
       if (get_entity_n_overwrites(ent) > 0) {
-           fprintf(F, "%s  overwrites:\n", prefix);
-           for (i = 0; i < get_entity_n_overwrites(ent); ++i) {
-             entity *ov = get_entity_overwrites(ent, i);
-             fprintf(F, "%s    %d: %s of class %s\n", prefix, i, get_entity_name(ov),
-                     get_type_name(get_entity_owner(ov)));
-           }
+       fprintf(F, "%s  overwrites:\n", prefix);
+       for (i = 0; i < get_entity_n_overwrites(ent); ++i) {
+         entity *ov = get_entity_overwrites(ent, i);
+         fprintf(F, "%s    %d: %s of class %s\n", prefix, i, get_entity_name(ov),
+                 get_type_name(get_entity_owner(ov)));
+       }
       } else {
-           fprintf(F, "%s  Does not overwrite other entities. \n", prefix);
+       fprintf(F, "%s  Does not overwrite other entities. \n", prefix);
       }
       if (get_entity_n_overwrittenby(ent) > 0) {
-           fprintf(F, "%s  overwritten by:\n", prefix);
-           for (i = 0; i < get_entity_n_overwrittenby(ent); ++i) {
-             entity *ov = get_entity_overwrittenby(ent, i);
-             fprintf(F, "%s    %d: %s of class %s\n", prefix, i, get_entity_name(ov),
-                     get_type_name(get_entity_owner(ov)));
+       fprintf(F, "%s  overwritten by:\n", prefix);
+       for (i = 0; i < get_entity_n_overwrittenby(ent); ++i) {
+         entity *ov = get_entity_overwrittenby(ent, i);
+         fprintf(F, "%s    %d: %s of class %s\n", prefix, i, get_entity_name(ov),
+                 get_type_name(get_entity_owner(ov)));
        }
       } else {
-           fprintf(F, "%s  Is not overwritten by other entities. \n", prefix);
+       fprintf(F, "%s  Is not overwritten by other entities. \n", prefix);
+      }
+
+      if (get_irp_inh_transitive_closure_state() != inh_transitive_closure_none) {
+       entity *ov;
+       fprintf(F, "%s  transitive overwrites:\n", prefix);
+       for (ov = get_entity_trans_overwrites_first(ent);
+            ov;
+            ov = get_entity_trans_overwrites_next(ent)) {
+         fprintf(F, "%s    : %s of class %s\n", prefix, get_entity_name(ov),
+                 get_type_name(get_entity_owner(ov)));
+       }
+       fprintf(F, "%s  transitive overwritten by:\n", prefix);
+       for (ov = get_entity_trans_overwrittenby_first(ent);
+            ov;
+            ov = get_entity_trans_overwrittenby_next(ent)) {
+         fprintf(F, "%s    : %s of class %s\n", prefix, get_entity_name(ov),
+                 get_type_name(get_entity_owner(ov)));
+       }
       }
     }
 
@@ -583,7 +601,7 @@ void    dump_entity_to_file_prefix (FILE *F, entity *ent, char *prefix, unsigned
   }
 
   if (get_trouts_state()) {
-    fprintf(F, "%sEntity outs:\n", prefix);
+    fprintf(F, "%s  Entity outs:\n", prefix);
     dump_node_list(F, (firm_kind *)ent, prefix, (int(*)(firm_kind *))get_entity_n_accesses,
                   (ir_node *(*)(firm_kind *, int))get_entity_access, "Accesses");
     dump_node_list(F, (firm_kind *)ent, prefix, (int(*)(firm_kind *))get_entity_n_references,
@@ -944,7 +962,24 @@ void dump_type_to_file (FILE *F, type *tp, dump_verbosity verbosity) {
         fprintf(F, "\n    %s", get_type_name(stp));
       }
 
+      if (get_irp_inh_transitive_closure_state() != inh_transitive_closure_none) {
+       type *stp;
+       fprintf(F, "\n  transitive supertypes: ");
+       for (stp = get_class_trans_supertype_first(tp);
+            stp;
+            stp = get_class_trans_supertype_next(tp)) {
+         fprintf(F, "\n    %s", get_type_name(stp));
+       }
+       fprintf(F, "\n  transitive subtypes: ");
+       for (stp = get_class_trans_subtype_first(tp);
+            stp;
+            stp = get_class_trans_subtype_next(tp)) {
+         fprintf(F, "\n    %s", get_type_name(stp));
+       }
+      }
+
       fprintf(F, "\n  peculiarity: %s\n", get_peculiarity_string(get_class_peculiarity(tp)));
+
     }
     break;
 
@@ -1045,12 +1080,13 @@ void dump_type_to_file (FILE *F, type *tp, dump_verbosity verbosity) {
     }
   }
 
-  fprintf(F, "  state:     %s,\n", get_type_state_name(get_type_state(tp)));
-  fprintf(F, "  size:      %2d Bits,\n",  get_type_size_bits(tp));
-  fprintf(F, "  alignment: %2d Bits,\n",  get_type_alignment_bits(tp));
+  fprintf(F, "  visibility: %s,\n", get_visibility_name(get_type_visibility(tp)));
+  fprintf(F, "  state:      %s,\n", get_type_state_name(get_type_state(tp)));
+  fprintf(F, "  size:       %2d Bits,\n",  get_type_size_bits(tp));
+  fprintf(F, "  alignment:  %2d Bits,\n",  get_type_alignment_bits(tp));
   if (is_atomic_type(tp) || is_Method_type(tp))
-    fprintf(F, "  mode:      %s,\n",  get_mode_name(get_type_mode(tp)));
-  fprintf(F, "  dbg info:  %p,\n",  (void *)get_type_dbg_info(tp));
+    fprintf(F, "  mode:       %s,\n",  get_mode_name(get_type_mode(tp)));
+  fprintf(F, "  dbg info:   %p,\n",  (void *)get_type_dbg_info(tp));
 
   if (get_trouts_state()) {
     fprintf(F, "\n  Type outs:\n");
@@ -1102,7 +1138,7 @@ void dump_type_to_file (FILE *F, type *tp, dump_verbosity verbosity) {
 #endif
     if (get_trouts_state() != outs_none) {
       fprintf(F, "  Estimated #Instances: %lf\n", get_type_estimated_n_instances(tp));
-      if (is_Class_type(tp)) {
+      if (is_Class_type(tp) && (get_irp_typeinfo_state() != ir_typeinfo_none)) {
        fprintf(F, "  Estimated #dyn Calls: %lf\n", get_class_estimated_n_dyncalls(tp));
        fprintf(F, "  Estimated #Upcasts:   %lf (#CastOps: %d)\n", get_class_estimated_n_upcasts(tp), get_class_n_upcasts(tp));
        fprintf(F, "  Estimated #Downcasts: %lf (#CastOps: %d)\n", get_class_estimated_n_downcasts(tp), get_class_n_downcasts(tp));