break;
case iro_Sel: {
assert(get_kind(get_Sel_entity(n)) == k_entity);
- fprintf (F, "%s", id_to_str(get_entity_ident(get_Sel_entity(n))));
+ fprintf (F, "%s", get_entity_name(get_Sel_entity(n)));
+ } break;
+ case iro_Cast: {
+ fprintf (F, "to %s", get_type_name(get_Cast_type(n)));
} break;
default:
;
if ((interprocedural_view && get_irn_visited(pred) < visited))
continue; /* pred not dumped */
if (is_backedge(n, i))
- fprintf (F, "backedge: {sourcename: ");
+ fprintf (F, "backedge: {sourcename: \"");
else
fprintf (F, "edge: {sourcename: \"");
PRINT_NODEID(n);
- fprintf (F, " \" targetname: ");
+ fprintf (F, "\" targetname: ");
if ((get_opt_dump_const_local()) && is_constlike_node(pred))
{
PRINT_CONSTID(n,pred);
case iro_SymConst:
if ( (get_SymConst_kind(n) == type_tag)
|| (get_SymConst_kind(n) == size))
- {
- PRINT_NODE_TYPE_EDGE(n,get_SymConst_type(n),NODE2TYPE_EDGE_ATTR);
- }
+ {
+ PRINT_NODE_TYPE_EDGE(n,get_SymConst_type(n),NODE2TYPE_EDGE_ATTR);
+ }
break;
case iro_Sel: {
- PRINT_NODE_ENT_EDGE(n,get_Sel_entity(n),NODE2TYPE_EDGE_ATTR);
+ PRINT_NODE_ENT_EDGE(n,get_Sel_entity(n),NODE2TYPE_EDGE_ATTR);
} break;
case iro_Call: {
- PRINT_NODE_TYPE_EDGE(n,get_Call_type(n),NODE2TYPE_EDGE_ATTR);
+ PRINT_NODE_TYPE_EDGE(n,get_Call_type(n),NODE2TYPE_EDGE_ATTR);
} break;
case iro_Alloc: {
- PRINT_NODE_TYPE_EDGE(n,get_Alloc_type(n),NODE2TYPE_EDGE_ATTR);
+ PRINT_NODE_TYPE_EDGE(n,get_Alloc_type(n),NODE2TYPE_EDGE_ATTR);
} break;
case iro_Free: {
- PRINT_NODE_TYPE_EDGE(n,get_Free_type(n),NODE2TYPE_EDGE_ATTR);
+ PRINT_NODE_TYPE_EDGE(n,get_Free_type(n),NODE2TYPE_EDGE_ATTR);
+ } break;
+ case iro_Cast: {
+ PRINT_NODE_TYPE_EDGE(n,get_Cast_type(n),NODE2TYPE_EDGE_ATTR);
} break;
default:
break;
}
-/* @@@@ Does not work as someone kills the visited flag. */
static void dump_const_expression(ir_node *value) {
ir_graph *rem = current_ir_graph;
int rem_dump_const_local = dump_const_local;
{
PRINT_TYPE_TYPE_EDGE(tp,get_array_element_type(tp),ARR_ELT_TYPE_EDGE_ATTR);
PRINT_TYPE_ENT_EDGE(tp,get_array_element_entity(tp),ARR_ENT_EDGE_ATTR);
+ for (i = 0; i < get_array_n_dimensions(tp); i++) {
+ ir_node *upper = get_array_upper_bound(tp, i);
+ ir_node *lower = get_array_lower_bound(tp, i);
+ PRINT_NODE_TYPE_EDGE(upper, tp, "label: \"upper %d\"", get_array_order(tp, i));
+ PRINT_NODE_TYPE_EDGE(lower, tp, "label: \"lower %d\"", get_array_order(tp, i));
+ dump_const_expression(upper);
+ dump_const_expression(lower);
+ }
+
} break;
case tpo_enumeration:
{
"orientation: bottom_to_top\n"
"classname 1: \"Data\"\n"
"classname 2: \"Block\"\n"
- "classname 3: \"Entity type\""
- "classname 4: \"Entity owner\""
- "classname 5: \"Method Param\""
- "classname 6: \"Method Res\""
- "classname 7: \"Super\""
- "classname 8: \"Union\""
- "classname 9: \"Points-to\""
- "classname 10: \"Array Element Type\""
- "classname 11: \"Overwrites\""
- "classname 12: \"Member\""
+ "classname 3: \"Entity type\"\n"
+ "classname 4: \"Entity owner\"\n"
+ "classname 5: \"Method Param\"\n"
+ "classname 6: \"Method Res\"\n"
+ "classname 7: \"Super\"\n"
+ "classname 8: \"Union\"\n"
+ "classname 9: \"Points-to\"\n"
+ "classname 10: \"Array Element Type\"\n"
+ "classname 11: \"Overwrites\"\n"
+ "classname 12: \"Member\"\n"
, cp, label);
fprintf (F, "\n"); /* a separator */