static int dump_loop_information_flag = 0;
static int dump_backedge_information_flag = 1;
static int dump_const_local = 0;
+static int dump_node_idx_labels = 0;
/** An option to dump all graph anchors */
static int dump_anchors = 0;
dump_const_local = flag;
}
+void dump_node_idx_label(int flag) {
+ dump_node_idx_labels = flag;
+}
+
void dump_constant_entity_values(int flag) {
const_entities = flag;
}
* Walker, clears the private link field.
*/
static void clear_link(ir_node * node, void * env) {
+ (void) env;
ird_set_irn_link(node, NULL);
}
* Walker that visits the anchors
*/
static void ird_walk_graph(ir_graph *irg, irg_walk_func *pre, irg_walk_func *post, void *env) {
- irg_walk_graph(irg, pre, post, env);
-
if (dump_anchors) {
- int i;
-
- for (i = anchor_max - 1; i >= 0; --i) {
- ir_node *n = irg->anchors[i];
-
- if (n) {
- /* reset the visit flag: will be increase in the walker */
- set_irg_visited(irg, get_irg_visited(irg) - 1);
- irg_walk(n, pre, post, env);
- }
- }
+ irg_walk_anchors(irg, pre, post, env);
+ } else {
+ irg_walk_graph(irg, pre, post, env);
}
}
* Walker, allocates an array for all blocks and puts it's nodes non-floating nodes into this array.
*/
static void collect_node(ir_node * node, void *env) {
+ (void) env;
if (is_Block(node)
|| node_floats(node)
|| get_irn_op(node) == op_Bad
int res;
char buf[1024];
res = tarval_snprintf(buf, sizeof(buf), get_Const_tarval(n));
- assert(res < sizeof(buf) && "buffer to small for tarval_snprintf");
+ assert(res < (int) sizeof(buf) && "buffer to small for tarval_snprintf");
fprintf(F, buf);
} break;
case symconst_enum_const:
fprintf(F, "SymC %s enum", get_enumeration_name(get_SymConst_enum(n)));
break;
+ case symconst_label:
+ fprintf(F, "SymC %lu label", get_SymConst_label(n));
+ break;
}
} break;
break;
}
case iro_Load:
+ if (get_Load_align(n) == align_non_aligned)
+ fprintf(F, "ua");
fprintf(F, "%s[%s]", get_irn_opname(n), get_mode_name_ex(get_Load_mode(n), &bad));
break;
+ case iro_Store:
+ if (get_Store_align(n) == align_non_aligned)
+ fprintf(F, "ua");
+ fprintf(F, "%s", get_irn_opname(n));
+ break;
case iro_Block:
fprintf(F, "%s%s", is_Block_dead(n) ? "Dead " : "", get_irn_opname(n));
break;
fprintf(F, "strict");
fprintf(F, "%s", get_irn_opname(n));
break;
+ case iro_Div:
+ fprintf(F, "%s[%s]", get_irn_opname(n), get_mode_name_ex(get_Div_resmode(n), &bad));
+ break;
+ case iro_Mod:
+ fprintf(F, "%s[%s]", get_irn_opname(n), get_mode_name_ex(get_Mod_resmode(n), &bad));
+ break;
+ case iro_DivMod:
+ fprintf(F, "%s[%s]", get_irn_opname(n), get_mode_name_ex(get_DivMod_resmode(n), &bad));
+ break;
default:
default_case:
fprintf(F, " ");
bad |= dump_node_typeinfo(F, n);
bad |= dump_node_nodeattr(F, n);
- fprintf(F, "%ld:%d", get_irn_node_nr(n), get_irn_idx(n));
+ if(dump_node_idx_labels) {
+ fprintf(F, "%ld:%d", get_irn_node_nr(n), get_irn_idx(n));
+ } else {
+ fprintf(F, "%ld", get_irn_node_nr(n));
+ }
return bad;
}
fprintf(F, INTER_MEM_EDGE_ATTR);
}
-static void
-print_edge_vcgattr(FILE *F, ir_node *from, int to) {
+/** Print the vcg attributes for the edge from node from to it's to's input */
+static void print_edge_vcgattr(FILE *F, ir_node *from, int to) {
assert(from);
if (dump_edge_vcgattr_hook)
case iro_End:
if (to >= 0) {
if (get_irn_mode(get_End_keepalive(from, to)) == mode_BB)
- fprintf(F, CF_EDGE_ATTR);
- if (get_irn_mode(get_End_keepalive(from, to)) == mode_X)
- fprintf(F, INTER_MEM_EDGE_ATTR);
+ fprintf(F, KEEP_ALIVE_CF_EDGE_ATTR);
+ else
+ fprintf(F, KEEP_ALIVE_DF_EDGE_ATTR);
}
break;
default:
}
}
-/* dump edges to our inputs */
-static void
-dump_ir_data_edges(FILE *F, ir_node *n) {
+/** dump edges to our inputs */
+static void dump_ir_data_edges(FILE *F, ir_node *n) {
int i;
unsigned long visited = get_irn_visited(n);
"classname 17: \"interblock Memory\"\n"
"classname 18: \"Exception Control Flow for Interval Analysis\"\n"
"classname 19: \"Postdominators\"\n"
+ "classname 20: \"Keep Alive\"\n"
"infoname 1: \"Attribute\"\n"
"infoname 2: \"Verification errors\"\n"
"infoname 3: \"Debug info\"\n",