new file mode 100644
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { dg-options "-fcallgraph-info" } */
+
+void f() {}
+void g() __attribute__ ((__alias__ ("f")));
+
+/* { dg-final { scan-dump-times "ci" "triangle" 1 "ci" {{}} } } */
@@ -37,6 +37,10 @@ proc dump-base { args } {
# gcc-defs to base compilation dumps only on the source basename.
set dumpbase $src
if { [string length $dumpbase_suf] != 0 } {
+ # Accept {} as dump base suffix to drop the source suffix entirely.
+ if { "$dumpbase_suf" == "{}" } {
+ set dumpbase_suf ""
+ }
regsub {[.][^.]*$} $src $dumpbase_suf dumpbase
}
return $dumpbase
@@ -914,6 +914,37 @@ dump_final_callee_vcg (FILE *f, location_t location, tree callee)
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
@@ -950,6 +981,12 @@ dump_final_node_vcg (FILE *f)
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. */