- Fixed masking of upper nibble of bitfield constants for tarval string output.
[libfirm] / ir / stat / stat_dmp.c
index e8ab327..dba32d3 100644 (file)
@@ -23,9 +23,7 @@
  * @author  Michael Beck
  * @version $Id$
  */
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
+#include "config.h"
 
 #include "stat_dmp.h"
 #include "irtools.h"
@@ -63,6 +61,7 @@ static const struct {
        { HOOK_OPT_CONFIRM_C,    "Confirm-based optimization: replaced by const" },
        { HOOK_OPT_CONFIRM_E,    "Confirm-based optimization: evaluated" },
        { HOOK_OPT_EXC_REM,      "a exception edge was removed due to a Confirmation prove" },
+       { HOOK_OPT_NORMALIZE,    "a commutative node was normalized" },
        { HOOK_LOWERED,          "Lowered" },
        { HOOK_BACKEND,          "Backend transformation" },
        { FS_OPT_NEUTRAL_0,      "algebraic simplification: a op 0 = 0 op a = a" },
@@ -139,6 +138,7 @@ static const struct {
        { FS_OPT_COMBO_CF,       "Combo: removed conditional control flow" },
        { FS_OPT_COMBO_FOLLOWER, "Combo: removed a follower" },
        { FS_OPT_COMBO_CONGRUENT,"Combo: replaced by congruent" },
+       { FS_OPT_COND_EVAL,      "Conditional evaluation: removed conditional control flow" },
        { FS_OPT_RTS_ABS,        "RTS optimization: call to abs() replaced" },
        { FS_OPT_RTS_ALLOCA,     "RTS optimization: call to alloca() replaced" },
        { FS_OPT_RTS_SQRT,       "RTS optimization: call to sqrt() replaced" },
@@ -158,9 +158,13 @@ static const struct {
        { FS_OPT_RTS_SYMMETRIC,  "RTS optimization: call to symmetric function f(-x) replaced by f(x)" },
        { FS_OPT_RTS_STRCMP,     "RTS optimization: call to strcmp() replaced" },
        { FS_OPT_RTS_STRNCMP,    "RTS optimization: call to strncmp() replaced" },
+       { FS_OPT_RTS_STRCPY,     "RTS optimization: call to strcpy() replaced" },
+       { FS_OPT_RTS_STRLEN,     "RTS optimization: call to strlen() replaced" },
        { FS_OPT_RTS_MEMCPY,     "RTS optimization: call to memcpy() replaced" },
+       { FS_OPT_RTS_MEMPCPY,    "RTS optimization: call to mempcpy() replaced" },
+       { FS_OPT_RTS_MEMMOVE,    "RTS optimization: call to memmove() replaced" },
        { FS_OPT_RTS_MEMSET,     "RTS optimization: call to memset() replaced" },
-       { FS_OPT_RTS_STRLEN,     "RTS optimization: call to strlen() replaced" },
+       { FS_OPT_RTS_MEMCMP,     "RTS optimization: call to memcmp() replaced" },
        { FS_BE_IA32_LEA,        "ia32 Backend transformation: Lea was created" },
        { FS_BE_IA32_LOAD_LEA,   "ia32 Backend transformation: Load merged with a Lea" },
        { FS_BE_IA32_STORE_LEA,  "ia32 Backend transformation: Store merged with a Lea" },
@@ -192,29 +196,34 @@ static void simple_dump_opcode_hash(dumper_t *dmp, pset *set)
        counter_t f_alive;
        counter_t f_new_node;
        counter_t f_Id;
+       counter_t f_normlized;
 
        cnt_clr(&f_alive);
        cnt_clr(&f_new_node);
        cnt_clr(&f_Id);
+       cnt_clr(&f_normlized);
 
-       fprintf(dmp->f, "%-16s %-8s %-8s %-8s\n", "Opcode", "alive", "created", "->Id");
+       fprintf(dmp->f, "%-16s %-8s %-8s %-8s %-8s\n", "Opcode", "alive", "created", "->Id", "normalized");
        foreach_pset(set, entry) {
-               fprintf(dmp->f, "%-16s %8u %8u %8u\n",
+               fprintf(dmp->f, "%-16s %8u %8u %8u %8u\n",
                        get_id_str(entry->op->name),
                        cnt_to_uint(&entry->cnt_alive),
                        cnt_to_uint(&entry->new_node),
-                       cnt_to_uint(&entry->into_Id)
+                       cnt_to_uint(&entry->into_Id),
+                       cnt_to_uint(&entry->normalized)
                );
 
-               cnt_add(&f_alive,    &entry->cnt_alive);
-               cnt_add(&f_new_node, &entry->new_node);
-               cnt_add(&f_Id,       &entry->into_Id);
+               cnt_add(&f_alive,     &entry->cnt_alive);
+               cnt_add(&f_new_node,  &entry->new_node);
+               cnt_add(&f_Id,        &entry->into_Id);
+               cnt_add(&f_normlized, &entry->normalized);
        }  /* foreach_pset */
        fprintf(dmp->f, "-------------------------------------------\n");
-       fprintf(dmp->f, "%-16s %8u %8u %8u\n", "Sum",
+       fprintf(dmp->f, "%-16s %8u %8u %8u %8u\n", "Sum",
                cnt_to_uint(&f_alive),
                cnt_to_uint(&f_new_node),
-               cnt_to_uint(&f_Id)
+               cnt_to_uint(&f_Id),
+               cnt_to_uint(&f_normlized)
        );
 }  /* simple_dump_opcode_hash */
 
@@ -485,6 +494,7 @@ static void simple_dump_graph(dumper_t *dmp, graph_entry_t *entry)
                        " calls only leaf functions : %s\n"
                        " recursive                 : %s\n"
                        " chain call                : %s\n"
+                       " strict                    : %s\n"
                        " calls                     : %u\n"
                        " indirect calls            : %u\n"
                        " external calls            : %u\n",
@@ -497,6 +507,7 @@ static void simple_dump_graph(dumper_t *dmp, graph_entry_t *entry)
                        entry->is_leaf_call == LCS_NON_LEAF_CALL ? "NO" : (entry->is_leaf_call == LCS_LEAF_CALL ? "Yes" : "Maybe"),
                        entry->is_recursive ? "YES" : "NO",
                        entry->is_chain_call ? "YES" : "NO",
+                       entry->is_strict ? "YES" : "NO",
                        cnt_to_uint(&entry->cnt[gcnt_all_calls]),
                        cnt_to_uint(&entry->cnt[gcnt_indirect_calls]),
                        cnt_to_uint(&entry->cnt[gcnt_external_calls])