}
-/* Replace this once I can do a reference. */
-#if 0
/**
* Dump the node information of a node n to a file F.
*/
fprintf(F, "\"\n");
return bad;
}
-#else
-/**
- * Dump the node information of a node n to a file F.
- */
-static INLINE int dump_node_info(FILE *F, ir_node *n)
-{
- int i, bad = 0;
- char comma;
- ir_graph *irg;
-
- fprintf (F, " info1: \"");
- if (opt_dump_pointer_values_to_info)
- fprintf (F, "addr: %p\n", (void *)n);
- fprintf (F, "mode: %s\n", get_mode_name(get_irn_mode(n)));
- fprintf (F, "visited: %ld\n", get_irn_visited(n));
- irg = get_irn_irg(n);
- if (irg != get_const_code_irg())
- fprintf (F, "irg: %s\n", get_ent_dump_name(get_irg_entity(irg)));
-
- 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)));
- }
-
-#if 0
- /* show all predecessor nodes */
- 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)));
- }
- for ( i = 0; i < get_irn_arity(n); ++i) {
- fprintf(F, " %d: ", i);
- dump_node_opcode(F, get_irn_n(n, i));
- fprintf(F, " %ld\n", get_irn_node_nr(get_irn_n(n, i)));
- }
-#endif
-
- fprintf(F, "arity: %d", get_irn_arity(n));
- if ((get_irn_op(n) == op_Block) ||
- (get_irn_op(n) == op_Phi) ||
- ((get_irn_op(n) == op_Filter) && get_interprocedural_view())) {
- fprintf(F, " backedges:");
- comma = ' ';
- for (i = 0; i < get_irn_arity(n); i++)
- if (is_backedge(n, i)) { fprintf(F, "%c %d", comma, i); comma = ','; }
- }
- fprintf(F, "\n");
-
- /* Loop node Someone else please tell me what's wrong ...
- if (get_irn_loop(n)) {
- ir_loop *loop = get_irn_loop(n);
- assert(loop);
- fprintf(F, " in loop %d with depth %d\n",
- get_loop_loop_nr(loop), get_loop_depth(loop));
- }
- */
-
- /* Source types */
- switch (get_irn_opcode(n)) {
- case iro_Start: {
- type *tp = get_entity_type(get_irg_entity(get_irn_irg(n)));
- fprintf(F, "start of method of type %s\n", get_type_name_ex(tp, &bad));
- for (i = 0; i < get_method_n_params(tp); ++i)
- fprintf(F, " param %d type: %s \n", i, get_type_name_ex(get_method_param_type(tp, i), &bad));
- if ((get_irp_ip_view_state() == ip_view_valid) && !get_interprocedural_view()) {
- ir_node *sbl = get_nodes_block(n);
- int i, n_cfgpreds = get_Block_cg_n_cfgpreds(sbl);
- fprintf(F, "graph has %d interprocedural predecessors:\n", n_cfgpreds);
- for (i = 0; i < n_cfgpreds; ++i) {
- ir_node *cfgpred = get_Block_cg_cfgpred(sbl, i);
- fprintf(F, " %d: Call %ld in graph %s\n", i, get_irn_node_nr(cfgpred),
- get_irg_dump_name(get_irn_irg(cfgpred)));
- }
- }
- } break;
- case iro_Alloc: {
- fprintf(F, "allocating entity of type %s\n", get_type_name_ex(get_Alloc_type(n), &bad));
- } break;
- case iro_Free: {
- fprintf(F, "freeing entity of type %s\n", get_type_name_ex(get_Free_type(n), &bad));
- } break;
- case iro_Sel: {
- entity *ent = get_Sel_entity(n);
-
- if (ent) {
- fprintf(F, "Selecting entity of type %s\n", get_type_name_ex(get_entity_type(ent), &bad));
- fprintf(F, " from entity of type %s\n", get_type_name_ex(get_entity_owner(ent), &bad));
- }
- else {
- fprintf(F, "<NULL entity>\n");
- bad = 1;
- }
- } break;
- case iro_Call: {
- type *tp = get_Call_type(n);
- fprintf(F, "calling method of type %s\n", get_type_name_ex(tp, &bad));
- if(get_unknown_type() != tp) {
- for (i = 0; i < get_method_n_params(tp); ++i)
- fprintf(F, " param %d type: %s\n", i, get_type_name_ex(get_method_param_type(tp, i), &bad));
- for (i = 0; i < get_method_n_ress(tp); ++i)
- fprintf(F, " resul %d type: %s\n", i, get_type_name_ex(get_method_res_type(tp, i), &bad));
- }
- if (Call_has_callees(n)) {
- fprintf(F, "possible callees:\n");
- for (i = 0; i < get_Call_n_callees(n); i++) {
- fprintf(F, " %d: %s\n", i, get_ent_dump_name(get_Call_callee(n, i)));
- }
- }
- } break;
- case iro_CallBegin: {
- ir_node *call = get_CallBegin_call(n);
- fprintf(F, "Call: %ld\n", get_irn_node_nr(call));
- if (Call_has_callees(call)) {
- fprintf(F, "possible callees: \n");
- for (i = 0; i < get_Call_n_callees(call); i++) {
- fprintf(F, " %d: %s\n", i, get_ent_dump_name(get_Call_callee(call, i)));
- }
- }
- } break;
- case iro_Return: {
- if (!get_interprocedural_view()) {
- type *tp = get_entity_type(get_irg_entity(get_irn_irg(n)));
- fprintf(F, "return in method of type %s\n", get_type_name_ex(tp, &bad));
- for (i = 0; i < get_method_n_ress(tp); ++i)
- fprintf(F, " res %d type: %s\n", i, get_type_name_ex(get_method_res_type(tp, i), &bad));
- }
- } break;
- case iro_Const: {
- type *tp = get_Const_type(n);
- assert(tp != none_type);
- fprintf(F, "Const of type %s\n", get_type_name_ex(get_Const_type(n), &bad));
- } break;
- case iro_SymConst: {
- switch(get_SymConst_kind(n)) {
- case symconst_addr_name:
- fprintf(F, "kind: addr_name\n");
- break;
- case symconst_addr_ent:
- fprintf(F, "kind: addr_ent\n");
- dump_entity_to_file(F, get_SymConst_entity(n), dump_verbosity_onlynames);
- break;
- case symconst_type_tag:
- fprintf(F, "kind: type_tag\n");
- break;
- case symconst_size:
- fprintf(F, "kind: size\n");
- break;
- }
- fprintf(F, "SymConst of type: %s\n", get_type_name_ex(get_SymConst_value_type(n), &bad));
- } break;
- case iro_Filter: {
- int i;
- if (get_interprocedural_view()) {
- fprintf(F, "intra predecessor nodes:\n");
- for (i = 0; i < get_irn_intra_arity(n); i++) {
- ir_node *pred = get_irn_intra_n(n, i);
- fprintf(F, " %s%s %ld\n", get_irn_opname(pred), get_irn_modename(pred), get_irn_node_nr(pred));
- }
- } else {
- fprintf(F, "inter predecessor nodes:\n");
- for (i = 0; i < get_irn_inter_arity(n); i++) {
- ir_node *pred = get_irn_inter_n(n, i);
- fprintf(F, " %s%s %ld \tin graph %s\n", get_irn_opname(pred), get_irn_modename(pred),
- get_irn_node_nr(pred), get_ent_dump_name(get_irg_entity(get_irn_irg(pred))));
- }
- }
- } break;
- case iro_Load:
- fprintf(F, "volatility: %s\n", get_volatility_name(get_Load_volatility(n)));
- break;
- case iro_Store:
- fprintf(F, "volatility: %s\n", get_volatility_name(get_Store_volatility(n)));
- break;
-
- default: ;
- }
-
- if (get_irg_typeinfo_state(get_irn_irg(n)) == irg_typeinfo_consistent ||
- get_irg_typeinfo_state(get_irn_irg(n)) == irg_typeinfo_inconsistent )
- if (get_irn_typeinfo_type(n) != none_type)
- fprintf (F, "Analysed type: %s\n", get_type_name_ex(get_irn_typeinfo_type(n), &bad));
-
- fprintf (F, "\"");
-
- return bad;
-}
-#endif
/**
* checks wheater a node is "constant-like", ie can be treated "block-less"