bool dump::visit(region_node& n, bool enter) { if (enter) { indent(); dump_flags(n); sblog << "region #" << n.region_id << " "; dump_common(n); if (!n.vars_defined.empty()) { sblog << "vars_defined: "; dump_set(sh, n.vars_defined); } dump_live_values(n, true); ++level; if (n.loop_phi) run_on(*n.loop_phi); } else { --level; if (n.phi) run_on(*n.phi); indent(); dump_live_values(n, false); } return true; }
bool dump::visit(cf_node& n, bool enter) { if (enter) { indent(); dump_flags(n); dump_op(n, n.bc.op_ptr->name); if (n.bc.op_ptr->flags & CF_BRANCH) { sblog << " @" << (n.bc.addr << 1); } dump_common(n); sblog << "\n"; if (!n.empty()) { indent(); sblog << "< "; dump_live_values(n, true); } ++level; } else { --level; if (!n.empty()) { indent(); sblog << "> "; dump_live_values(n, false); } } return true; }
static void dump_common(g95_symtree *st) { g95_common_head *c; if (st == NULL) return; dump_common(st->left); dump_common(st->right); dumpf("sym_common(%S, [", st->name); for(c=st->n.common; c; c=c->next) dumpf("%L,", &c->where); dumpf("])\n"); }
bool dump::visit(alu_node& n, bool enter) { if (enter) { indent(); dump_flags(n); dump_alu(&n); dump_common(n); sblog << "\n"; ++level; } else { --level; } return true; }
int dump_global_config() { // only dump, no error detect. dmd_log(LOG_INFO, "in function %s:\n", __func__); int ret = dump_common(); assert(ret == 0); if (global.cluster_mode == CLUSTER_CLIENT || global.cluster_mode == CLUSTER_SINGLETON) { ret = dump_client(); assert(ret == 0); } else if (global.cluster_mode == CLUSTER_SERVER) { ret = dump_server(); assert(ret == 0); } return 0; }
bool dump::visit(if_node& n, bool enter) { if (enter) { indent(); dump_flags(n); sblog << "if " << *n.cond << " "; dump_common(n); sblog << " "; dump_live_values(n, true); indent(); sblog <<"{\n"; ++level; } else { --level; indent(); sblog << "} endif "; dump_live_values(n, false); } return true; }
bool dump::visit(depart_node& n, bool enter) { if (enter) { indent(); dump_flags(n); sblog << "depart region #" << n.target->region_id; sblog << (n.empty() ? " " : " after { "); dump_common(n); sblog << " "; dump_live_values(n, true); ++level; } else { --level; if (!n.empty()) { indent(); sblog << "} end_depart "; dump_live_values(n, false); } } return true; }
static void dump_ns(g95_namespace *ns) { g95_symbol *sym, *result; g95_namespace *p, *save; g95_locus *where; g95_annot *a; int m, rank; save = g95_current_ns; g95_current_ns = ns; where = &ns->declared_at; sym = ns->proc_name; switch(ns->state) { case COMP_PROGRAM: if (ns->unit_name == NULL) dumpf("program(None, %L)\n", where); else dumpf("program(%S,%L)\n", ns->unit_name, where); break; case COMP_MODULE: dumpf("module(%S,%L,%L)\n", sym->name, where, &ns->proc_name->declared_at); break; case COMP_SUBROUTINE: dumpf("subroutine(%S,%S,%L,", sym->name, sym->module, &ns->proc_name->declared_at); dump_formal(ns->proc_name); dumpf(")\n"); break; case COMP_FUNCTION: result = sym->result; rank = (result->as == NULL) ? 0 : result->as->rank; dumpf("function(%S,%S,%L,%S,%d,%d,", sym->name, sym->module, &ns->proc_name->declared_at, g95_typename(&result->ts), rank, result->attr.pointer); dump_formal(ns->proc_name); dumpf(")\n"); break; case COMP_BLOCK_DATA: if (ns->proc_name->name == NULL) dumpf("block_data(None,%L)\n", where); else dumpf("block_data(%S,%L)\n", sym->name, where); break; case COMP_NONE: return; default: g95_internal_error("dump_ns(): Bad state"); } g95_traverse_symtree(ns, g95_clear_sym_mark); g95_traverse_symtree(ns, dump_symtree); dump_common(ns->common_root); for(a=ns->annotation; a; a=a->next) switch(a->type) { case ANNOT_PARAMETER: dumpf("parameter_use(%p,%L)\n", a->u.sym, &a->where); break; case ANNOT_DERIVED: dumpf("derived_use(%p,%L)\n", a->u.sym, &a->where); break; case ANNOT_LABEL: dumpf("label_use(%p,%L)\n", a->u.sym, &a->where); break; case ANNOT_OPERATOR: dumpf("operator_use(%p,%L)\n", a->u.sym, &a->where); break; default: g95_internal_error("init_dump(): Bad type"); } m = dump_code(ns->code); dumpf("add_code(%C)\n", m); if (m != 0) dumpf("del %C\n", m); for(p=ns->contained; p; p=p->sibling) dump_ns(p); dumpf("end()\n"); g95_current_ns = save; }