fputs ("\" }\n", f);
}
+/* Callback for cgraph_node::call_for_symbol_thunks_and_aliases to dump to F_ a
+ node and an edge from ALIAS->DECL to CURRENT_FUNCTION_DECL. */
+
+static bool
+dump_final_alias_vcg (cgraph_node *alias, void *f_)
+{
+ FILE *f = (FILE *)f_;
+
+ if (alias->decl == current_function_decl)
+ return false;
+
+ dump_final_node_vcg_start (f, alias->decl);
+ fputs ("\" shape : triangle }\n", f);
+
+ fputs ("edge: { sourcename: \"", f);
+ print_decl_identifier (f, alias->decl, PRINT_DECL_UNIQUE_NAME);
+ fputs ("\" targetname: \"", f);
+ print_decl_identifier (f, current_function_decl, PRINT_DECL_UNIQUE_NAME);
+ location_t location = DECL_SOURCE_LOCATION (alias->decl);
+ if (LOCATION_LOCUS (location) != UNKNOWN_LOCATION)
+ {
+ expanded_location loc;
+ fputs ("\" label: \"", f);
+ loc = expand_location (location);
+ fprintf (f, "%s:%d:%d", loc.file, loc.line, loc.column);
+ }
+ fputs ("\" }\n", f);
+
+ return false;
+}
+
/* Dump final cgraph node in VCG format. */
static void
dump_final_callee_vcg (f, c->location, c->decl);
vec_free (cfun->su->callees);
cfun->su->callees = NULL;
+
+ cgraph_node *node = cgraph_node::get (current_function_decl);
+ if (!node)
+ return;
+ node->call_for_symbol_thunks_and_aliases (dump_final_alias_vcg, f,
+ true, false);
}
/* Output stack usage and callgraph info, as requested. */