Message ID | 244da13d-7e3b-b58b-f8ce-5caca7163a2b@linux.ibm.com |
---|---|
State | New |
Headers | show |
Series | [v7] Missed function specialization + partial devirtualization | expand |
> > I think you are also not removing the common_target and > > common_target_probability from cgraph_edge. > > There is now code in ipa-utils merging the histograms. You will need to > > update that to your representation. It should not be hard - it either > > copies all the values from target function or merges them with given > > probability scales. > > This seems a bit tricky for me. ipa-icf runs after ipa-profile, the reason why > remove <common_target_id, common_target_probability> is they are never used in > later passes during previous discussion. There is also merging done from lto-symtab. If you have COMDAT inline which is late inlined at -fprofile-generate time you will end up with multiple profiles for it and they needs to be merged. This is done before IPA passes including ipa-profile. > > I added a new variable target_prob to save it in direct edge when calling > make_speculative, since the target_prob is assigned in ipa-profile, so no > need to stream out and in through LTO like speculative_id. > > Even though, scaling in ipa-icf with multiple direct edges is more complicate then > single direct edge, need double circulation to find each src to dst edge map and do > scaling one by one. > > BTW, the breaking patch r279373 "Fix merging of common traget info." only mentioned > firefox but doesn't include a testcase, I tried to construct some test > cases, but fail to cover all the circumstance (I just implemented the N:N map yet, > please refer to the code in below patch.), do you have cases other than firefox to > cover it? Or how to test it as r279373 required? As this piece of code is not quite > related to this patch, can we just leave it for future refine? Thanks :) You need testcase with a comdat that is used & inlined in two units, contains indirect call and build with -fno-early-inlining. However we can handle this incrementally. > 2019-12-26 Xiong Hu Luo <luoxhu@linux.ibm.com> > > PR ipa/69678 > * cgraph.c (symbol_table::create_edge): Init speculative_id and > target_prob. > (cgraph_edge::make_speculative): Add param for setting speculative_id > and target_prob. > (cgraph_edge::speculative_call_info): Update comments and find reference > by speculative_id for multiple indirect targets. > (cgraph_edge::resolve_speculation): Decrease the speculations > for indirect edge, drop it's speculative if not direct target > left. Update comments. > (cgraph_edge::redirect_call_stmt_to_callee): Likewise. > (cgraph_node::dump): Print num_speculative_call_targets. > (cgraph_node::verify_node): Don't report error if speculative > edge not include statement. > (cgraph_edge::num_speculative_call_targets_p): New function. > * cgraph.h (int common_target_id): Remove. > (int common_target_probability): Remove. > (num_speculative_call_targets): New variable. > (make_speculative): Add param for setting speculative_id. > (cgraph_edge::num_speculative_call_targets_p): New declare. > (target_prob): New variable. > (speculative_id): New variable. > * ipa-fnsummary.c (analyze_function_body): Create and duplicate > call summaries for multiple speculative call targets. > * cgraphclones.c (cgraph_node::create_clone): Clone speculative_id. > * ipa-profile.c (struct speculative_call_target): New struct. > (class speculative_call_summary): New class. > (class speculative_call_summaries): New class. > (call_sums): New variable. > (ipa_profile_generate_summary): Generate indirect multiple targets summaries. > (ipa_profile_write_edge_summary): New function. > (ipa_profile_write_summary): Stream out indirect multiple targets summaries. > (ipa_profile_dump_all_summaries): New function. > (ipa_profile_read_edge_summary): New function. > (ipa_profile_read_summary_section): New function. > (ipa_profile_read_summary): Stream in indirect multiple targets summaries. > (ipa_profile): Generate num_speculative_call_targets from > profile summaries. > * ipa-ref.h (speculative_id): New variable. > * ipa-utils.c (ipa_merge_profiles): Update with target_prob. > * lto-cgraph.c (lto_output_edge): Remove indirect common_target_id and > common_target_probability. Stream out speculative_id and > num_speculative_call_targets. > (input_edge): Likewise. > * predict.c (dump_prediction): Remove edges count assert to be > precise. > * symtab.c (symtab_node::create_reference): Init speculative_id. > (symtab_node::clone_references): Clone speculative_id. > (symtab_node::clone_referring): Clone speculative_id. > (symtab_node::clone_reference): Clone speculative_id. > (symtab_node::clear_stmts_in_references): Clear speculative_id. > * tree-inline.c (copy_bb): Duplicate all the speculative edges > if indirect call contains multiple speculative targets. > * value-prof.h (check_ic_target): Remove. > * value-prof.c (gimple_value_profile_transformations): > Use void function gimple_ic_transform. > * value-prof.c (gimple_ic_transform): Handle topn case. > Fix comment typos. Change it to a void function. > > gcc/testsuite/ChangeLog > > 2019-12-26 Xiong Hu Luo <luoxhu@linux.ibm.com> > > PR ipa/69678 > * gcc.dg/tree-prof/indir-call-prof-topn.c: New testcase. > * gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c: New testcase. > * gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c: New testcase. > * gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c: New testcase. > * lib/scandump.exp: Dump executable file name. > * lib/scanwpaipa.exp: New scan-pgo-wap-ipa-dump. OK. You will need to do the obvious updates for Martin's patch which turned some member functions into static functions. Honza
On 2020/1/10 19:08, Jan Hubicka wrote: > OK. You will need to do the obvious updates for Martin's patch > which turned some member functions into static functions. > > Honza Thanks a lot! Rebased & updated, will commit below patch shortly when git push is ready. v8: 1. Rebase to master with Martin's static function (r280043) comments merge. Boostrap/testsuite/SPEC2017 tested pass on Power8-LE. 2. TODO: 2.1. C++ devirt for multiple speculative call targets. 2.2. ipa-icf ipa_merge_profiles refine with COMDAT inline testcase. This patch aims to fix PR69678 caused by PGO indirect call profiling performance issues. The bug that profiling data is never working was fixed by Martin's pull back of topN patches, performance got GEOMEAN ~1% improvement(+24% for 511.povray_r specifically). Still, currently the default profile only generates SINGLE indirect target that called more than 75%. This patch leverages MULTIPLE indirect targets use in LTO-WPA and LTO-LTRANS stage, as a result, function specialization, profiling, partial devirtualization, inlining and cloning could be done successfully based on it. Performance can get improved from 0.70 sec to 0.38 sec on simple tests. Details are: 1. PGO with topn is enabled by default now, but only one indirect target edge will be generated in ipa-profile pass, so add variables to enable multiple speculative edges through passes, speculative_id will record the direct edge index bind to the indirect edge, indirect_call_targets length records how many direct edges owned by the indirect edge, postpone gimple_ic to ipa-profile like default as inline pass will decide whether it is benefit to transform indirect call. 2. Use speculative_id to track and search the reference node matched with the direct edge's callee for multiple targets. Actually, it is the caller's responsibility to handle the direct edges mapped to same indirect edge. speculative_call_info will return one of the direct edge specified, this will leverage current IPA edge process framework mostly. 3. Enable LTO WPA/LTRANS stage multiple indirect call targets analysis for profile full support in ipa passes and cgraph_edge functions. speculative_id can be set by make_speculative id when multiple targets are binded to one indirect edge, and cloned if new edge is cloned. speculative_id is streamed out and stream int by lto like lto_stmt_uid. 4. Create and duplicate all speculative direct edge's call summary in ipa-fnsummary.c with auto_vec. 5. Add 1 in module testcase and 2 cross module testcases. 6. Bootstrap and regression test passed on Power8-LE. No function and performance regression for SPEC2017. gcc/ChangeLog 2020-01-13 Xiong Hu Luo <luoxhu@linux.ibm.com> PR ipa/69678 * cgraph.c (symbol_table::create_edge): Init speculative_id and target_prob. (cgraph_edge::make_speculative): Add param for setting speculative_id and target_prob. (cgraph_edge::speculative_call_info): Update comments and find reference by speculative_id for multiple indirect targets. (cgraph_edge::resolve_speculation): Decrease the speculations for indirect edge, drop it's speculative if not direct target left. Update comments. (cgraph_edge::redirect_call_stmt_to_callee): Likewise. (cgraph_node::dump): Print num_speculative_call_targets. (cgraph_node::verify_node): Don't report error if speculative edge not include statement. (cgraph_edge::num_speculative_call_targets_p): New function. * cgraph.h (int common_target_id): Remove. (int common_target_probability): Remove. (num_speculative_call_targets): New variable. (make_speculative): Add param for setting speculative_id. (cgraph_edge::num_speculative_call_targets_p): New declare. (target_prob): New variable. (speculative_id): New variable. * ipa-fnsummary.c (analyze_function_body): Create and duplicate call summaries for multiple speculative call targets. * cgraphclones.c (cgraph_node::create_clone): Clone speculative_id. * ipa-profile.c (struct speculative_call_target): New struct. (class speculative_call_summary): New class. (class speculative_call_summaries): New class. (call_sums): New variable. (ipa_profile_generate_summary): Generate indirect multiple targets summaries. (ipa_profile_write_edge_summary): New function. (ipa_profile_write_summary): Stream out indirect multiple targets summaries. (ipa_profile_dump_all_summaries): New function. (ipa_profile_read_edge_summary): New function. (ipa_profile_read_summary_section): New function. (ipa_profile_read_summary): Stream in indirect multiple targets summaries. (ipa_profile): Generate num_speculative_call_targets from profile summaries. * ipa-ref.h (speculative_id): New variable. * ipa-utils.c (ipa_merge_profiles): Update with target_prob. * lto-cgraph.c (lto_output_edge): Remove indirect common_target_id and common_target_probability. Stream out speculative_id and num_speculative_call_targets. (input_edge): Likewise. * predict.c (dump_prediction): Remove edges count assert to be precise. * symtab.c (symtab_node::create_reference): Init speculative_id. (symtab_node::clone_references): Clone speculative_id. (symtab_node::clone_referring): Clone speculative_id. (symtab_node::clone_reference): Clone speculative_id. (symtab_node::clear_stmts_in_references): Clear speculative_id. * tree-inline.c (copy_bb): Duplicate all the speculative edges if indirect call contains multiple speculative targets. * value-prof.h (check_ic_target): Remove. * value-prof.c (gimple_value_profile_transformations): Use void function gimple_ic_transform. * value-prof.c (gimple_ic_transform): Handle topn case. Fix comment typos. Change it to a void function. gcc/testsuite/ChangeLog 2020-01-13 Xiong Hu Luo <luoxhu@linux.ibm.com> PR ipa/69678 * gcc.dg/tree-prof/indir-call-prof-topn.c: New testcase. * gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c: New testcase. * gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c: New testcase. * gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c: New testcase. * lib/scandump.exp: Dump executable file name. * lib/scanwpaipa.exp: New scan-pgo-wap-ipa-dump. --- gcc/ChangeLog | 61 +++ gcc/cgraph.c | 117 +++++- gcc/cgraph.h | 51 ++- gcc/cgraphclones.c | 1 + gcc/ipa-fnsummary.c | 22 +- gcc/ipa-profile.c | 353 ++++++++++++++++-- gcc/ipa-ref.h | 3 + gcc/ipa-utils.c | 173 ++++++--- gcc/lto-cgraph.c | 30 +- gcc/predict.c | 1 - gcc/symtab.c | 5 + gcc/testsuite/ChangeLog | 10 + .../tree-prof/crossmodule-indir-call-topn-1.c | 33 ++ .../crossmodule-indir-call-topn-1a.c | 22 ++ .../tree-prof/crossmodule-indir-call-topn-2.c | 40 ++ .../gcc.dg/tree-prof/indir-call-prof-topn.c | 37 ++ gcc/testsuite/lib/scandump.exp | 1 + gcc/testsuite/lib/scanwpaipa.exp | 23 ++ gcc/tree-inline.c | 32 +- gcc/value-prof.c | 87 +++-- gcc/value-prof.h | 1 - 21 files changed, 934 insertions(+), 169 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c create mode 100644 gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c create mode 100644 gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c create mode 100644 gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-topn.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a195863212e..a1a7576ba9d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,64 @@ +2020-01-13 Xiong Hu Luo <luoxhu@linux.ibm.com> + + PR ipa/69678 + * cgraph.c (symbol_table::create_edge): Init speculative_id and + target_prob. + (cgraph_edge::make_speculative): Add param for setting speculative_id + and target_prob. + (cgraph_edge::speculative_call_info): Update comments and find reference + by speculative_id for multiple indirect targets. + (cgraph_edge::resolve_speculation): Decrease the speculations + for indirect edge, drop it's speculative if not direct target + left. Update comments. + (cgraph_edge::redirect_call_stmt_to_callee): Likewise. + (cgraph_node::dump): Print num_speculative_call_targets. + (cgraph_node::verify_node): Don't report error if speculative + edge not include statement. + (cgraph_edge::num_speculative_call_targets_p): New function. + * cgraph.h (int common_target_id): Remove. + (int common_target_probability): Remove. + (num_speculative_call_targets): New variable. + (make_speculative): Add param for setting speculative_id. + (cgraph_edge::num_speculative_call_targets_p): New declare. + (target_prob): New variable. + (speculative_id): New variable. + * ipa-fnsummary.c (analyze_function_body): Create and duplicate + call summaries for multiple speculative call targets. + * cgraphclones.c (cgraph_node::create_clone): Clone speculative_id. + * ipa-profile.c (struct speculative_call_target): New struct. + (class speculative_call_summary): New class. + (class speculative_call_summaries): New class. + (call_sums): New variable. + (ipa_profile_generate_summary): Generate indirect multiple targets summaries. + (ipa_profile_write_edge_summary): New function. + (ipa_profile_write_summary): Stream out indirect multiple targets summaries. + (ipa_profile_dump_all_summaries): New function. + (ipa_profile_read_edge_summary): New function. + (ipa_profile_read_summary_section): New function. + (ipa_profile_read_summary): Stream in indirect multiple targets summaries. + (ipa_profile): Generate num_speculative_call_targets from + profile summaries. + * ipa-ref.h (speculative_id): New variable. + * ipa-utils.c (ipa_merge_profiles): Update with target_prob. + * lto-cgraph.c (lto_output_edge): Remove indirect common_target_id and + common_target_probability. Stream out speculative_id and + num_speculative_call_targets. + (input_edge): Likewise. + * predict.c (dump_prediction): Remove edges count assert to be + precise. + * symtab.c (symtab_node::create_reference): Init speculative_id. + (symtab_node::clone_references): Clone speculative_id. + (symtab_node::clone_referring): Clone speculative_id. + (symtab_node::clone_reference): Clone speculative_id. + (symtab_node::clear_stmts_in_references): Clear speculative_id. + * tree-inline.c (copy_bb): Duplicate all the speculative edges + if indirect call contains multiple speculative targets. + * value-prof.h (check_ic_target): Remove. + * value-prof.c (gimple_value_profile_transformations): + Use void function gimple_ic_transform. + * value-prof.c (gimple_ic_transform): Handle topn case. + Fix comment typos. Change it to a void function. + 2020-01-10 Thomas Schwinge <thomas@codesourcery.com> * tree.h (OMP_CLAUSE_USE_DEVICE_PTR_IF_PRESENT): New definition. diff --git a/gcc/cgraph.c b/gcc/cgraph.c index fe3f06726d4..95b523d6be5 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -858,6 +858,8 @@ symbol_table::create_edge (cgraph_node *caller, cgraph_node *callee, edge->prev_callee = NULL; edge->next_callee = NULL; edge->lto_stmt_uid = 0; + edge->target_prob = 0; + edge->speculative_id = 0; edge->count = count; edge->call_stmt = call_stmt; @@ -1044,10 +1046,16 @@ cgraph_edge::remove (cgraph_edge *edge) the reference representing the if conditional and attaches them all to the original indirect call statement. + speculative_id is used to link direct calls with their corresponding + IPA_REF_ADDR references when representing speculative calls. + + target_prob is the probability of the speculative call. + Return direct edge created. */ cgraph_edge * -cgraph_edge::make_speculative (cgraph_node *n2, profile_count direct_count) +cgraph_edge::make_speculative (cgraph_node *n2, profile_count direct_count, + unsigned int speculative_id, int target_prob) { cgraph_node *n = caller; ipa_ref *ref = NULL; @@ -1065,24 +1073,53 @@ cgraph_edge::make_speculative (cgraph_node *n2, profile_count direct_count) else e2->can_throw_external = can_throw_external; e2->lto_stmt_uid = lto_stmt_uid; + e2->speculative_id = speculative_id; + e2->target_prob = target_prob; e2->in_polymorphic_cdtor = in_polymorphic_cdtor; count -= e2->count; symtab->call_edge_duplication_hooks (this, e2); ref = n->create_reference (n2, IPA_REF_ADDR, call_stmt); ref->lto_stmt_uid = lto_stmt_uid; + ref->speculative_id = speculative_id; ref->speculative = speculative; n2->mark_address_taken (); return e2; } -/* Speculative call consist of three components: - 1) an indirect edge representing the original call - 2) an direct edge representing the new call - 3) ADDR_EXPR reference representing the speculative check. - All three components are attached to single statement (the indirect - call) and if one of them exists, all of them must exist. +/* Speculative calls represent a transformation of indirect calls + which may be later inserted into gimple in the following form: + + if (call_dest == target1) + target1 (); + else if (call_dest == target2) + target2 (); + else + call_dest (); + + This is a win in the case when target1 and target2 are common values for + call_dest as determined by ipa-devirt or indirect call profiling. + In particular this may enable inlining and other optimizations. + + Speculative call consists of the following main components: + + 1) One or more "speculative" direct call (num_speculative_call_targets is + speculative direct call count belongs to the speculative indirect call) + 2) One or more IPA_REF_ADDR references (representing the fact that code above + takes address of target1 and target2) + 3) The fallback "speculative" indirect call - Given speculative call edge, return all three components. + Direct calls and corresponding references are linked by + speculative_id. + + speculative_call_info returns triple + (direct_call, indirect call, IPA_REF_ADDR reference) + when called on one edge participating in the speculative call: + + 1) If called on direct call, its corresponding IPA_REF_ADDR and related + indirect call are returned. + + 2) If called on indirect call, it will return one of direct edges and its + matching IPA_REF_ADDR. */ void @@ -1122,7 +1159,7 @@ cgraph_edge::speculative_call_info (cgraph_edge *&direct, reference = NULL; for (i = 0; e->caller->iterate_reference (i, ref); i++) - if (ref->speculative + if (ref->speculative && ref->speculative_id == e->speculative_id && ((ref->stmt && ref->stmt == e->call_stmt) || (!ref->stmt && ref->lto_stmt_uid == e->lto_stmt_uid))) { @@ -1138,9 +1175,18 @@ cgraph_edge::speculative_call_info (cgraph_edge *&direct, /* Speculative call EDGE turned out to be direct call to CALLEE_DECL. Remove the speculative call sequence and return edge representing the call, the - original EDGE can be removed and deallocated. It is up to caller to - redirect the call as appropriate. Return the edge that now represents the - call. */ + original EDGE can be removed and deallocated. Return the edge that now + represents the call. + + For "speculative" indirect call that contains multiple "speculative" + targets (i.e. edge->indirect_info->num_speculative_call_targets > 1), + decrease the count and only remove current direct edge. + + If no speculative direct call left to the speculative indirect call, remove + the speculative of both the indirect call and corresponding direct edge. + + It is up to caller to iteratively resolve each "speculative" direct call and + redirect the call as appropriate. */ cgraph_edge * cgraph_edge::resolve_speculation (cgraph_edge *edge, tree callee_decl) @@ -1184,7 +1230,16 @@ cgraph_edge::resolve_speculation (cgraph_edge *edge, tree callee_decl) in the functions inlined through it. */ } edge->count += e2->count; - edge->speculative = false; + if (edge->num_speculative_call_targets_p ()) + { + /* The indirect edge has multiple speculative targets, don't remove + speculative until all related direct edges are resolved. */ + edge->indirect_info->num_speculative_call_targets--; + if (!edge->indirect_info->num_speculative_call_targets) + edge->speculative = false; + } + else + edge->speculative = false; e2->speculative = false; ref->remove_reference (); if (e2->indirect_unknown_callee || e2->inline_failed) @@ -1244,7 +1299,17 @@ cgraph_edge::make_direct (cgraph_edge *edge, cgraph_node *callee) /* If necessary, change the function declaration in the call statement associated with E so that it corresponds to the edge callee. Speculations - can be resolved in the process and EDGE can be removed and deallocated. */ + can be resolved in the process and EDGE can be removed and deallocated. + + The edge could be one of speculative direct call generated from speculative + indirect call. In this circumstance, decrease the speculative targets + count (i.e. num_speculative_call_targets) and redirect call stmt to the + corresponding i-th target. If no speculative direct call left to the + speculative indirect call, remove "speculative" of the indirect call and + also redirect stmt to it's final direct target. + + It is up to caller to iteratively transform each "speculative" + direct call as appropriate. */ gimple * cgraph_edge::redirect_call_stmt_to_callee (cgraph_edge *e) @@ -1290,7 +1355,17 @@ cgraph_edge::redirect_call_stmt_to_callee (cgraph_edge *e) e->caller->set_call_stmt_including_clones (e->call_stmt, new_stmt, false); e->count = gimple_bb (e->call_stmt)->count; - e2->speculative = false; + if (e2->num_speculative_call_targets_p ()) + { + /* The indirect edge has multiple speculative targets, don't + remove speculative until all related direct edges are + redirected. */ + e2->indirect_info->num_speculative_call_targets--; + if (!e2->indirect_info->num_speculative_call_targets) + e2->speculative = false; + } + else + e2->speculative = false; e2->count = gimple_bb (e2->call_stmt)->count; ref->speculative = false; ref->stmt = NULL; @@ -2103,6 +2178,8 @@ cgraph_node::dump (FILE *f) if (edge->indirect_info->vptr_changed) fprintf (f, " (vptr maybe changed)"); } + fprintf (f, " Num speculative call targets: %i", + edge->indirect_info->num_speculative_call_targets); fprintf (f, "\n"); if (edge->indirect_info->polymorphic) edge->indirect_info->context.dump (f); @@ -3393,7 +3470,7 @@ cgraph_node::verify_node (void) for (e = callees; e; e = e->next_callee) { - if (!e->aux) + if (!e->aux && !e->speculative) { error ("edge %s->%s has no corresponding call_stmt", identifier_to_locale (e->caller->name ()), @@ -3732,6 +3809,14 @@ cgraph_edge::possibly_call_in_translation_unit_p (void) return node->get_availability () >= AVAIL_INTERPOSABLE; } +/* Return num_speculative_targets of this edge. */ + +int +cgraph_edge::num_speculative_call_targets_p (void) +{ + return indirect_info ? indirect_info->num_speculative_call_targets : 0; +} + /* A stashed copy of "symtab" for use by selftest::symbol_table_test. This needs to be a global so that it can be a GC root, and thus prevent the stashed copy from being garbage-collected if the GC runs diff --git a/gcc/cgraph.h b/gcc/cgraph.h index 71cd902312e..0ace13df1f9 100644 --- a/gcc/cgraph.h +++ b/gcc/cgraph.h @@ -1703,10 +1703,9 @@ public: int param_index; /* ECF flags determined from the caller. */ int ecf_flags; - /* Profile_id of common target obtained from profile. */ - int common_target_id; - /* Probability that call will land in function with COMMON_TARGET_ID. */ - int common_target_probability; + + /* Number of speculative call targets, it's less than GCOV_TOPN_VALUES. */ + unsigned num_speculative_call_targets : 16; /* Set when the call is a virtual call with the parameter being the associated object pointer rather than a simple direct call. */ @@ -1764,10 +1763,14 @@ public: /* Turn edge into speculative call calling N2. Update the profile so the direct call is taken COUNT times - with FREQUENCY. */ - cgraph_edge *make_speculative (cgraph_node *n2, profile_count direct_count); - - /* Given speculative call edge, return all three components. */ + with FREQUENCY. speculative_id is used to link direct calls with their + corresponding IPA_REF_ADDR references when representing speculative calls. + target_prob is the probability of the speculative call. */ + cgraph_edge *make_speculative (cgraph_node *n2, profile_count direct_count, + unsigned int speculative_id = 0, + int target_prob = 0); + + /* Given speculative call edge, return all three components. */ void speculative_call_info (cgraph_edge *&direct, cgraph_edge *&indirect, ipa_ref *&reference); @@ -1775,14 +1778,34 @@ public: the speculative call sequence and return edge representing the call, the original EDGE can be removed and deallocated. It is up to caller to redirect the call as appropriate. Return the edge that now represents the - call. */ + call. + + For "speculative" indirect call that contains multiple "speculative" + targets (i.e. edge->indirect_info->num_speculative_call_targets > 1), + decrease the count and only remove current direct edge. + + If no speculative direct call left to the speculative indirect call, remove + the speculative of both the indirect call and corresponding direct edge. + + It is up to caller to iteratively resolve each "speculative" direct call + and redirect the call as appropriate. */ static cgraph_edge *resolve_speculation (cgraph_edge *edge, tree callee_decl = NULL); /* If necessary, change the function declaration in the call statement associated with edge E so that it corresponds to the edge callee. Speculations can be resolved in the process and EDGE can be removed and - deallocated. */ + deallocated. + + The edge could be one of speculative direct call generated from speculative + indirect call. In this circumstance, decrease the speculative targets + count (i.e. num_speculative_call_targets) and redirect call stmt to the + corresponding i-th target. If no speculative direct call left to the + speculative indirect call, remove "speculative" of the indirect call and + also redirect stmt to it's final direct target. + + It is up to caller to iteratively transform each "speculative" + direct call as appropriate. */ static gimple *redirect_call_stmt_to_callee (cgraph_edge *e); /* Create clone of edge in the node N represented @@ -1829,6 +1852,9 @@ public: be internal to the current translation unit. */ bool possibly_call_in_translation_unit_p (void); + /* Return num_speculative_targets of this edge. */ + int num_speculative_call_targets_p (void); + /* Expected number of executions: calculated in profile.c. */ profile_count count; cgraph_node *caller; @@ -1848,6 +1874,11 @@ public: /* The stmt_uid of call_stmt. This is used by LTO to recover the call_stmt when the function is serialized in. */ unsigned int lto_stmt_uid; + /* target_prob is the probability of the speculative call. */ + unsigned int target_prob; + /* speculative id is used to link direct calls with their corresponding + IPA_REF_ADDR references when representing speculative calls. */ + unsigned int speculative_id : 16; /* Whether this edge was made direct by indirect inlining. */ unsigned int indirect_inlining_edge : 1; /* Whether this edge describes an indirect call with an undetermined diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c index c186fb98cf5..e73e0696b91 100644 --- a/gcc/cgraphclones.c +++ b/gcc/cgraphclones.c @@ -133,6 +133,7 @@ cgraph_edge::clone (cgraph_node *n, gcall *call_stmt, unsigned stmt_uid, new_edge->inline_failed = inline_failed; new_edge->indirect_inlining_edge = indirect_inlining_edge; new_edge->lto_stmt_uid = stmt_uid; + new_edge->speculative_id = speculative_id; /* Clone flags that depend on call_stmt availability manually. */ new_edge->can_throw_external = can_throw_external; new_edge->call_stmt_cannot_inline_p = call_stmt_cannot_inline_p; diff --git a/gcc/ipa-fnsummary.c b/gcc/ipa-fnsummary.c index efe42641b6b..4e1c587b101 100644 --- a/gcc/ipa-fnsummary.c +++ b/gcc/ipa-fnsummary.c @@ -2604,7 +2604,7 @@ analyze_function_body (struct cgraph_node *node, bool early) edge_set_predicate (edge, &bb_predicate); if (edge->speculative) { - cgraph_edge *direct, *indirect; + cgraph_edge *direct, *indirect, *next_direct; ipa_ref *ref; edge->speculative_call_info (direct, indirect, ref); gcc_assert (direct == edge); @@ -2612,6 +2612,26 @@ analyze_function_body (struct cgraph_node *node, bool early) = ipa_call_summaries->get_create (indirect); ipa_call_summaries->duplicate (edge, indirect, es, es2); + + /* Create and duplicate call summaries for multiple + speculative call targets. */ + int num_specs = indirect->num_speculative_call_targets_p (); + if (num_specs > 1) + for (next_direct = edge->next_callee; + next_direct && --num_specs; + next_direct = next_direct->next_callee) + { + next_direct->speculative_call_info (direct, indirect, + ref); + if (direct == next_direct && next_direct->speculative + && edge->call_stmt == stmt) + { + ipa_call_summary *es3 + = ipa_call_summaries->get_create (next_direct); + ipa_call_summaries->duplicate (edge, next_direct, + es, es3); + } + } } } diff --git a/gcc/ipa-profile.c b/gcc/ipa-profile.c index 017f63e80a3..fc231c916b7 100644 --- a/gcc/ipa-profile.c +++ b/gcc/ipa-profile.c @@ -159,7 +159,99 @@ dump_histogram (FILE *file, vec<histogram_entry *> histogram) } } -/* Collect histogram from CFG profiles. */ +/* Structure containing speculative target information from profile. */ + +struct speculative_call_target +{ + speculative_call_target (unsigned int id = 0, int prob = 0) + : target_id (id), target_probability (prob) + { + } + + /* Profile_id of target obtained from profile. */ + unsigned int target_id; + /* Probability that call will land in function with target_id. */ + unsigned int target_probability; +}; + +class speculative_call_summary +{ +public: + speculative_call_summary () : speculative_call_targets () + {} + + auto_vec<speculative_call_target> speculative_call_targets; + + void dump (FILE *f); + +}; + + /* Class to manage call summaries. */ + +class ipa_profile_call_summaries + : public call_summary<speculative_call_summary *> +{ +public: + ipa_profile_call_summaries (symbol_table *table) + : call_summary<speculative_call_summary *> (table) + {} + + /* Duplicate info when an edge is cloned. */ + virtual void duplicate (cgraph_edge *, cgraph_edge *, + speculative_call_summary *old_sum, + speculative_call_summary *new_sum); +}; + +static ipa_profile_call_summaries *call_sums = NULL; + +/* Dump all information in speculative call summary to F. */ + +void +speculative_call_summary::dump (FILE *f) +{ + cgraph_node *n2; + + unsigned spec_count = speculative_call_targets.length (); + for (unsigned i = 0; i < spec_count; i++) + { + speculative_call_target item = speculative_call_targets[i]; + n2 = find_func_by_profile_id (item.target_id); + if (n2) + fprintf (f, " The %i speculative target is %s with prob %3.2f\n", i, + n2->dump_name (), + item.target_probability / (float) REG_BR_PROB_BASE); + else + fprintf (f, " The %i speculative target is %u with prob %3.2f\n", i, + item.target_id, + item.target_probability / (float) REG_BR_PROB_BASE); + } +} + +/* Duplicate info when an edge is cloned. */ + +void +ipa_profile_call_summaries::duplicate (cgraph_edge *, cgraph_edge *, + speculative_call_summary *old_sum, + speculative_call_summary *new_sum) +{ + if (!old_sum) + return; + + unsigned old_count = old_sum->speculative_call_targets.length (); + if (!old_count) + return; + + new_sum->speculative_call_targets.reserve_exact (old_count); + new_sum->speculative_call_targets.quick_grow_cleared (old_count); + + for (unsigned i = 0; i < old_count; i++) + { + new_sum->speculative_call_targets[i] + = old_sum->speculative_call_targets[i]; + } +} + +/* Collect histogram and speculative target summaries from CFG profiles. */ static void ipa_profile_generate_summary (void) @@ -169,7 +261,10 @@ ipa_profile_generate_summary (void) basic_block bb; hash_table<histogram_hash> hashtable (10); - + + gcc_checking_assert (!call_sums); + call_sums = new ipa_profile_call_summaries (symtab); + FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (node) if (ENTRY_BLOCK_PTR_FOR_FN (DECL_STRUCT_FUNCTION (node->decl))->count.ipa_p ()) FOR_EACH_BB_FN (bb, DECL_STRUCT_FUNCTION (node->decl)) @@ -191,23 +286,35 @@ ipa_profile_generate_summary (void) if (h) { gcov_type val, count, all; - if (get_nth_most_common_value (NULL, "indirect call", h, - &val, &count, &all)) + struct cgraph_edge *e = node->get_edge (stmt); + if (e && !e->indirect_unknown_callee) + continue; + + speculative_call_summary *csum + = call_sums->get_create (e); + + for (unsigned j = 0; j < GCOV_TOPN_VALUES; j++) { - struct cgraph_edge * e = node->get_edge (stmt); - if (e && !e->indirect_unknown_callee) + if (!get_nth_most_common_value (NULL, "indirect call", + h, &val, &count, &all, + j)) + continue; + + if (val == 0) continue; - e->indirect_info->common_target_id = val; - e->indirect_info->common_target_probability - = GCOV_COMPUTE_SCALE (count, all); - if (e->indirect_info->common_target_probability > REG_BR_PROB_BASE) + speculative_call_target item ( + val, GCOV_COMPUTE_SCALE (count, all)); + if (item.target_probability > REG_BR_PROB_BASE) { if (dump_file) - fprintf (dump_file, "Probability capped to 1\n"); - e->indirect_info->common_target_probability = REG_BR_PROB_BASE; + fprintf (dump_file, + "Probability capped to 1\n"); + item.target_probability = REG_BR_PROB_BASE; } + csum->speculative_call_targets.safe_push (item); } + gimple_remove_histogram_value (DECL_STRUCT_FUNCTION (node->decl), stmt, h); } @@ -222,6 +329,33 @@ ipa_profile_generate_summary (void) histogram.qsort (cmp_counts); } +/* Serialize the speculative summary info for LTO. */ + +static void +ipa_profile_write_edge_summary (lto_simple_output_block *ob, + speculative_call_summary *csum) +{ + unsigned len = 0; + + len = csum->speculative_call_targets.length (); + + gcc_assert (len <= GCOV_TOPN_VALUES); + + streamer_write_hwi_stream (ob->main_stream, len); + + if (len) + { + unsigned spec_count = csum->speculative_call_targets.length (); + for (unsigned i = 0; i < spec_count; i++) + { + speculative_call_target item = csum->speculative_call_targets[i]; + gcc_assert (item.target_id); + streamer_write_hwi_stream (ob->main_stream, item.target_id); + streamer_write_hwi_stream (ob->main_stream, item.target_probability); + } + } +} + /* Serialize the ipa info for lto. */ static void @@ -238,10 +372,122 @@ ipa_profile_write_summary (void) streamer_write_uhwi_stream (ob->main_stream, histogram[i]->time); streamer_write_uhwi_stream (ob->main_stream, histogram[i]->size); } + + if (!call_sums) + return; + + /* Serialize speculative targets information. */ + unsigned int count = 0; + lto_symtab_encoder_t encoder = ob->decl_state->symtab_node_encoder; + lto_symtab_encoder_iterator lsei; + cgraph_node *node; + + for (lsei = lsei_start_function_in_partition (encoder); !lsei_end_p (lsei); + lsei_next_function_in_partition (&lsei)) + { + node = lsei_cgraph_node (lsei); + if (node->definition && node->has_gimple_body_p () + && node->indirect_calls) + count++; + } + + streamer_write_uhwi_stream (ob->main_stream, count); + + /* Process all of the functions. */ + for (lsei = lsei_start_function_in_partition (encoder); + !lsei_end_p (lsei) && count; lsei_next_function_in_partition (&lsei)) + { + cgraph_node *node = lsei_cgraph_node (lsei); + if (node->definition && node->has_gimple_body_p () + && node->indirect_calls) + { + int node_ref = lto_symtab_encoder_encode (encoder, node); + streamer_write_uhwi_stream (ob->main_stream, node_ref); + + for (cgraph_edge *e = node->indirect_calls; e; e = e->next_callee) + { + speculative_call_summary *csum = call_sums->get_create (e); + ipa_profile_write_edge_summary (ob, csum); + } + } + } + lto_destroy_simple_output_block (ob); } -/* Deserialize the ipa info for lto. */ +/* Dump all profile summary data for all cgraph nodes and edges to file F. */ + +static void +ipa_profile_dump_all_summaries (FILE *f) +{ + fprintf (dump_file, + "\n========== IPA-profile speculative targets: ==========\n"); + cgraph_node *node; + FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (node) + { + fprintf (f, "\nSummary for node %s:\n", node->dump_name ()); + for (cgraph_edge *e = node->indirect_calls; e; e = e->next_callee) + { + fprintf (f, " Summary for %s of indirect edge %d:\n", + e->caller->dump_name (), e->lto_stmt_uid); + speculative_call_summary *csum = call_sums->get_create (e); + csum->dump (f); + } + } + fprintf (f, "\n\n"); +} + +/* Read speculative targets information about edge for LTO WPA. */ + +static void +ipa_profile_read_edge_summary (class lto_input_block *ib, cgraph_edge *edge) +{ + unsigned i, len; + + len = streamer_read_hwi (ib); + gcc_assert (len <= GCOV_TOPN_VALUES); + + speculative_call_summary *csum = call_sums->get_create (edge); + + for (i = 0; i < len; i++) + { + speculative_call_target item (streamer_read_hwi (ib), + streamer_read_hwi (ib)); + csum->speculative_call_targets.safe_push (item); + } +} + +/* Read profile speculative targets section information for LTO WPA. */ + +static void +ipa_profile_read_summary_section (struct lto_file_decl_data *file_data, + class lto_input_block *ib) +{ + if (!ib) + return; + + lto_symtab_encoder_t encoder = file_data->symtab_node_encoder; + + unsigned int count = streamer_read_uhwi (ib); + + unsigned int i; + unsigned int index; + cgraph_node * node; + + for (i = 0; i < count; i++) + { + index = streamer_read_uhwi (ib); + encoder = file_data->symtab_node_encoder; + node + = dyn_cast<cgraph_node *> (lto_symtab_encoder_deref (encoder, index)); + + for (cgraph_edge *e = node->indirect_calls; e; e = e->next_callee) + ipa_profile_read_edge_summary (ib, e); + } +} + +/* Deserialize the IPA histogram and speculative targets summary info for LTO. + */ static void ipa_profile_read_summary (void) @@ -253,6 +499,9 @@ ipa_profile_read_summary (void) hash_table<histogram_hash> hashtable (10); + gcc_checking_assert (!call_sums); + call_sums = new ipa_profile_call_summaries (symtab); + while ((file_data = file_data_vec[j++])) { const char *data; @@ -273,6 +522,9 @@ ipa_profile_read_summary (void) account_time_size (&hashtable, histogram, count, time, size); } + + ipa_profile_read_summary_section (file_data, ib); + lto_destroy_simple_input_block (file_data, LTO_section_ipa_profile, ib, data, len); @@ -512,6 +764,7 @@ ipa_profile (void) int nindirect = 0, ncommon = 0, nunknown = 0, nuseless = 0, nconverted = 0; int nmismatch = 0, nimpossible = 0; bool node_map_initialized = false; + gcov_type threshold; if (dump_file) dump_histogram (dump_file, histogram); @@ -520,14 +773,12 @@ ipa_profile (void) overall_time += histogram[i]->count * histogram[i]->time; overall_size += histogram[i]->size; } + threshold = 0; if (overall_time) { - gcov_type threshold; - gcc_assert (overall_size); cutoff = (overall_time * param_hot_bb_count_ws_permille + 500) / 1000; - threshold = 0; for (i = 0; cumulated < cutoff; i++) { cumulated += histogram[i]->count * histogram[i]->time; @@ -563,10 +814,21 @@ ipa_profile (void) histogram.release (); histogram_pool.release (); - /* Produce speculative calls: we saved common target from porfiling into - e->common_target_id. Now, at link time, we can look up corresponding + /* Produce speculative calls: we saved common target from profiling into + e->target_id. Now, at link time, we can look up corresponding function node and produce speculative call. */ + gcc_checking_assert (call_sums); + + if (dump_file) + { + if (!node_map_initialized) + init_node_map (false); + node_map_initialized = true; + + ipa_profile_dump_all_summaries (dump_file); + } + FOR_EACH_DEFINED_FUNCTION (n) { bool update = false; @@ -578,13 +840,35 @@ ipa_profile (void) { if (n->count.initialized_p ()) nindirect++; - if (e->indirect_info->common_target_id) + + speculative_call_summary *csum = call_sums->get_create (e); + unsigned spec_count = csum->speculative_call_targets.length (); + if (spec_count) { if (!node_map_initialized) - init_node_map (false); + init_node_map (false); node_map_initialized = true; ncommon++; - n2 = find_func_by_profile_id (e->indirect_info->common_target_id); + + if (in_lto_p) + { + if (dump_file) + { + fprintf (dump_file, + "Updating hotness threshold in LTO mode.\n"); + fprintf (dump_file, "Updated min count: %" PRId64 "\n", + (int64_t) threshold / spec_count); + } + set_hot_bb_threshold (threshold / spec_count); + } + + unsigned speculative_id = 0; + bool speculative_found = false; + for (unsigned i = 0; i < spec_count; i++) + { + speculative_call_target item + = csum->speculative_call_targets[i]; + n2 = find_func_by_profile_id (item.target_id); if (n2) { if (dump_file) @@ -593,11 +877,10 @@ ipa_profile (void) " other module %s => %s, prob %3.2f\n", n->dump_name (), n2->dump_name (), - e->indirect_info->common_target_probability - / (float)REG_BR_PROB_BASE); + item.target_probability + / (float) REG_BR_PROB_BASE); } - if (e->indirect_info->common_target_probability - < REG_BR_PROB_BASE / 2) + if (item.target_probability < REG_BR_PROB_BASE / 2) { nuseless++; if (dump_file) @@ -653,20 +936,26 @@ ipa_profile (void) n2 = alias; } nconverted++; - e->make_speculative - (n2, - e->count.apply_probability - (e->indirect_info->common_target_probability)); + e->make_speculative (n2, + e->count.apply_probability ( + item.target_probability), + speculative_id, + item.target_probability); update = true; + speculative_id++; + speculative_found = true; } } else { if (dump_file) fprintf (dump_file, "Function with profile-id %i not found.\n", - e->indirect_info->common_target_id); + item.target_id); nunknown++; } + } + if (speculative_found) + e->indirect_info->num_speculative_call_targets = speculative_id; } } if (update) @@ -729,6 +1018,10 @@ ipa_profile (void) } } free (order); + + if (dump_file && (dump_flags & TDF_DETAILS)) + symtab->dump (dump_file); + return 0; } diff --git a/gcc/ipa-ref.h b/gcc/ipa-ref.h index f4ea7945338..1de5bd34b82 100644 --- a/gcc/ipa-ref.h +++ b/gcc/ipa-ref.h @@ -59,6 +59,9 @@ public: symtab_node *referred; gimple *stmt; unsigned int lto_stmt_uid; + /* speculative id is used to link direct calls with their corresponding + IPA_REF_ADDR references when representing speculative calls. */ + unsigned int speculative_id : 16; unsigned int referred_index; ENUM_BITFIELD (ipa_ref_use) use:3; unsigned int speculative:1; diff --git a/gcc/ipa-utils.c b/gcc/ipa-utils.c index 2e8298045fa..587ad5c6360 100644 --- a/gcc/ipa-utils.c +++ b/gcc/ipa-utils.c @@ -675,68 +675,133 @@ ipa_merge_profiles (struct cgraph_node *dst, e2 = (e2 ? e2->next_callee : NULL), e = e->next_callee) { profile_count count = gimple_bb (e->call_stmt)->count; + /* Below code are introduced by r279373 of "Fix merging of common + traget info.". + + ipa-icf runs after ipa-profile, common_target_id with + common_target_probablity are useless in ipa-icf since they are + moved from cgraph.h to ipa-profile.c and processed already. + Need double circulation to find out each mapped direct speculative + edge and do prob merge. Not easy to construct a case to cover all + circumstances here. For src and dst both have multiple speculative + targets, only N:N maps are implemented, 2:0, 2:1, 0:2, 1:2 are not + implemented yet as too complicated and no test cases to cover. */ if (copy_counts) { - e->indirect_info->common_target_id - = e2->indirect_info->common_target_id; - e->indirect_info->common_target_probability - = e2->indirect_info->common_target_probability; + /* copy if both e and e2 have same num_speculative_call_targets. + */ + if (e->num_speculative_call_targets_p () + == e2->num_speculative_call_targets_p ()) + { + int num_specs = e->num_speculative_call_targets_p (); + cgraph_edge *direct, *indirect, *next_direct; + cgraph_edge *direct2, *indirect2, *next_direct2; + ipa_ref *ref; + for (next_direct = e; next_direct && num_specs--; + next_direct = direct->next_callee) + { + next_direct->speculative_call_info (direct, indirect, + ref); + + int num_specs2 = e2->num_speculative_call_targets_p (); + for (next_direct2 = e2; next_direct2 && num_specs2--; + next_direct2 = direct2->next_callee) + { + if (e2 && e2->speculative) + next_direct2->speculative_call_info (direct2, + indirect2, + ref); + if (direct->speculative_id == direct2->speculative_id + && direct->lto_stmt_uid == direct2->lto_stmt_uid) + { + direct->target_prob = direct2->target_prob; + break; + } + } + } + } + else + gcc_assert (e->num_speculative_call_targets_p () + && e->num_speculative_call_targets_p ()); } - else if (e->indirect_info->common_target_id - || e2->indirect_info->common_target_id) + else if (e->num_speculative_call_targets_p () + || e2->num_speculative_call_targets_p ()) { - sreal scale1 - = e->count.ipa().to_sreal_scale (count); - sreal scale2 - = e2->count.ipa().to_sreal_scale (count); - - if (scale1 == 0 && scale2 == 0) - scale1 = scale2 = 1; - sreal sum = scale1 + scale2; - int scaled_probability1 - = ((sreal)e->indirect_info->common_target_probability - * scale1 / sum).to_int (); - int scaled_probability2 - = ((sreal)e2->indirect_info->common_target_probability - * scale2 / sum).to_int (); - if (symtab->dump_file) + if (e->num_speculative_call_targets_p () + == e2->num_speculative_call_targets_p ()) { - fprintf (symtab->dump_file, - "Merging common targets %i prob %i" - " and %i prob %i with scales %f %f\n", - e->indirect_info->common_target_id, - e->indirect_info->common_target_probability, - e2->indirect_info->common_target_id, - e2->indirect_info->common_target_probability, - scale1.to_double (), - scale2.to_double ()); - fprintf (symtab->dump_file, "Combined BB count "); - count.dump (symtab->dump_file); - fprintf (symtab->dump_file, " dst edge count "); - e->count.dump (symtab->dump_file); - fprintf (symtab->dump_file, " src edge count "); - e2->count.dump (symtab->dump_file); - fprintf (symtab->dump_file, "\n"); + int num_specs = e->num_speculative_call_targets_p (); + cgraph_edge *direct, *indirect, *next_direct; + cgraph_edge *direct2, *indirect2, *next_direct2; + ipa_ref *ref; + for (next_direct = e; next_direct && num_specs--; + next_direct = direct->next_callee) + { + next_direct->speculative_call_info (direct, indirect, + ref); + + int num_specs2 = e2->num_speculative_call_targets_p (); + for (next_direct2 = e2; next_direct2 && num_specs2--; + next_direct2 = direct2->next_callee) + { + if (e2 && e2->speculative) + next_direct2->speculative_call_info (direct2, + indirect2, + ref); + if (direct->speculative_id == direct2->speculative_id + && direct->lto_stmt_uid == direct2->lto_stmt_uid) + { + sreal scale1 + = e->count.ipa ().to_sreal_scale (count); + sreal scale2 + = e2->count.ipa ().to_sreal_scale (count); + + if (scale1 == 0 && scale2 == 0) + scale1 = scale2 = 1; + sreal sum = scale1 + scale2; + int scaled_prob1 + = (((sreal)direct->target_prob) + * scale1 / sum).to_int (); + int scaled_prob2 + = (((sreal)direct2->target_prob) + * scale2 / sum).to_int (); + if (symtab->dump_file) + { + fprintf ( + symtab->dump_file, + "Merging speculative id %i prob %i" + " and %i prob %i with scales %f %f\n", + direct->speculative_id, direct->target_prob, + direct2->speculative_id, + direct2->target_prob, scale1.to_double (), + scale2.to_double ()); + fprintf (symtab->dump_file, + "Combined BB count "); + count.dump (symtab->dump_file); + fprintf (symtab->dump_file, + " dst edge count "); + e->count.dump (symtab->dump_file); + fprintf (symtab->dump_file, + " src edge count "); + e2->count.dump (symtab->dump_file); + fprintf (symtab->dump_file, "\n"); + } + direct->target_prob = scaled_prob1 + scaled_prob2; + break; + } + } + } } - if (e->indirect_info->common_target_id - == e2->indirect_info->common_target_id) - e->indirect_info->common_target_probability - = scaled_probability1 + scaled_probability2; - else if (!e2->indirect_info->common_target_id - || scaled_probability1 > scaled_probability2) - e->indirect_info->common_target_probability - = scaled_probability1; - else + else if (e->num_speculative_call_targets_p ()) { - e->indirect_info->common_target_id - = e2->indirect_info->common_target_id; - e->indirect_info->common_target_probability - = scaled_probability2; + /* Process if only dst is speculative. */ + gcc_assert (!e->num_speculative_call_targets_p ()); + } + else if (e2->num_speculative_call_targets_p ()) + { + /* Process if only src is speculative. */ + gcc_assert (!e2->num_speculative_call_targets_p ()); } - if (symtab->dump_file) - fprintf (symtab->dump_file, "Merged as %i prob %i\n", - e->indirect_info->common_target_id, - e->indirect_info->common_target_probability); } /* When call is speculative, we need to re-distribute probabilities diff --git a/gcc/lto-cgraph.c b/gcc/lto-cgraph.c index dd605f65918..621607499e1 100644 --- a/gcc/lto-cgraph.c +++ b/gcc/lto-cgraph.c @@ -262,6 +262,7 @@ lto_output_edge (struct lto_simple_output_block *ob, struct cgraph_edge *edge, bp_pack_enum (&bp, cgraph_inline_failed_t, CIF_N_REASONS, edge->inline_failed); bp_pack_var_len_unsigned (&bp, uid); + bp_pack_value (&bp, edge->speculative_id, 16); bp_pack_value (&bp, edge->indirect_inlining_edge, 1); bp_pack_value (&bp, edge->speculative, 1); bp_pack_value (&bp, edge->call_stmt_cannot_inline_p, 1); @@ -284,16 +285,11 @@ lto_output_edge (struct lto_simple_output_block *ob, struct cgraph_edge *edge, | ECF_SIBCALL | ECF_LEAF | ECF_NOVOPS))); + + bp_pack_value (&bp, edge->indirect_info->num_speculative_call_targets, + 16); } streamer_write_bitpack (&bp); - if (edge->indirect_unknown_callee) - { - streamer_write_hwi_stream (ob->main_stream, - edge->indirect_info->common_target_id); - if (edge->indirect_info->common_target_id) - streamer_write_hwi_stream - (ob->main_stream, edge->indirect_info->common_target_probability); - } } /* Return if NODE contain references from other partitions. */ @@ -690,6 +686,8 @@ lto_output_ref (struct lto_simple_output_block *ob, struct ipa_ref *ref, if (ref->stmt) uid = gimple_uid (ref->stmt) + 1; streamer_write_hwi_stream (ob->main_stream, uid); + bp_pack_value (&bp, ref->speculative_id, 16); + streamer_write_bitpack (&bp); } } @@ -1428,7 +1426,11 @@ input_ref (class lto_input_block *ib, ref = referring_node->create_reference (node, use); ref->speculative = speculative; if (is_a <cgraph_node *> (referring_node)) - ref->lto_stmt_uid = streamer_read_hwi (ib); + { + ref->lto_stmt_uid = streamer_read_hwi (ib); + bp = streamer_read_bitpack (ib); + ref->speculative_id = bp_unpack_value (&bp, 16); + } } /* Read an edge from IB. NODES points to a vector of previously read nodes for @@ -1442,7 +1444,7 @@ input_edge (class lto_input_block *ib, vec<symtab_node *> nodes, { struct cgraph_node *caller, *callee; struct cgraph_edge *edge; - unsigned int stmt_id; + unsigned int stmt_id, speculative_id; profile_count count; cgraph_inline_failed_t inline_failed; struct bitpack_d bp; @@ -1466,6 +1468,7 @@ input_edge (class lto_input_block *ib, vec<symtab_node *> nodes, bp = streamer_read_bitpack (ib); inline_failed = bp_unpack_enum (&bp, cgraph_inline_failed_t, CIF_N_REASONS); stmt_id = bp_unpack_var_len_unsigned (&bp); + speculative_id = bp_unpack_value (&bp, 16); if (indirect) edge = caller->create_indirect_edge (NULL, 0, count); @@ -1475,6 +1478,7 @@ input_edge (class lto_input_block *ib, vec<symtab_node *> nodes, edge->indirect_inlining_edge = bp_unpack_value (&bp, 1); edge->speculative = bp_unpack_value (&bp, 1); edge->lto_stmt_uid = stmt_id; + edge->speculative_id = speculative_id; edge->inline_failed = inline_failed; edge->call_stmt_cannot_inline_p = bp_unpack_value (&bp, 1); edge->can_throw_external = bp_unpack_value (&bp, 1); @@ -1494,9 +1498,9 @@ input_edge (class lto_input_block *ib, vec<symtab_node *> nodes, if (bp_unpack_value (&bp, 1)) ecf_flags |= ECF_RETURNS_TWICE; edge->indirect_info->ecf_flags = ecf_flags; - edge->indirect_info->common_target_id = streamer_read_hwi (ib); - if (edge->indirect_info->common_target_id) - edge->indirect_info->common_target_probability = streamer_read_hwi (ib); + + edge->indirect_info->num_speculative_call_targets + = bp_unpack_value (&bp, 16); } } diff --git a/gcc/predict.c b/gcc/predict.c index a134deb9b3f..02c5fe0667d 100644 --- a/gcc/predict.c +++ b/gcc/predict.c @@ -761,7 +761,6 @@ dump_prediction (FILE *file, enum br_predictor predictor, int probability, && bb->count.precise_p () && reason == REASON_NONE) { - gcc_assert (e->count ().precise_p ()); fprintf (file, ";;heuristics;%s;%" PRId64 ";%" PRId64 ";%.1f;\n", predictor_info[predictor].name, bb->count.to_gcov_type (), e->count ().to_gcov_type (), diff --git a/gcc/symtab.c b/gcc/symtab.c index 1b1b0ee409d..f141200a452 100644 --- a/gcc/symtab.c +++ b/gcc/symtab.c @@ -605,6 +605,7 @@ symtab_node::create_reference (symtab_node *referred_node, ref->referred = referred_node; ref->stmt = stmt; ref->lto_stmt_uid = 0; + ref->speculative_id = 0; ref->use = use_type; ref->speculative = 0; @@ -662,6 +663,7 @@ symtab_node::clone_references (symtab_node *node) ref2 = create_reference (ref->referred, ref->use, ref->stmt); ref2->speculative = speculative; ref2->lto_stmt_uid = stmt_uid; + ref2->speculative_id = ref->speculative_id; } } @@ -680,6 +682,7 @@ symtab_node::clone_referring (symtab_node *node) ref2 = ref->referring->create_reference (this, ref->use, ref->stmt); ref2->speculative = speculative; ref2->lto_stmt_uid = stmt_uid; + ref2->speculative_id = ref->speculative_id; } } @@ -695,6 +698,7 @@ symtab_node::clone_reference (ipa_ref *ref, gimple *stmt) ref2 = create_reference (ref->referred, ref->use, stmt); ref2->speculative = speculative; ref2->lto_stmt_uid = stmt_uid; + ref2->speculative_id = ref->speculative_id; return ref2; } @@ -749,6 +753,7 @@ symtab_node::clear_stmts_in_references (void) { r->stmt = NULL; r->lto_stmt_uid = 0; + r->speculative_id = 0; } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index cccc2853ed5..9a62668c548 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2020-01-13 Xiong Hu Luo <luoxhu@linux.ibm.com> + + PR ipa/69678 + * gcc.dg/tree-prof/indir-call-prof-topn.c: New testcase. + * gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c: New testcase. + * gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c: New testcase. + * gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c: New testcase. + * lib/scandump.exp: Dump executable file name. + * lib/scanwpaipa.exp: New scan-pgo-wap-ipa-dump. + 2020-01-10 Thomas Schwinge <thomas@codesourcery.com> * c-c++-common/goacc/host_data-1.c: Extend. diff --git a/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c new file mode 100644 index 00000000000..a13b08cd60e --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c @@ -0,0 +1,33 @@ +/* { dg-require-effective-target lto } */ +/* { dg-additional-sources "crossmodule-indir-call-topn-1a.c" } */ +/* { dg-require-profiling "-fprofile-generate" } */ +/* { dg-options "-O2 -flto -DDOJOB=1 -fdump-ipa-profile_estimate" } */ + +#include <stdio.h> + +typedef int (*fptr) (int); +int +one (int a); + +int +two (int a); + +fptr table[] = {&one, &two}; + +int +main() +{ + int i, x; + fptr p = &one; + + x = one (3); + + for (i = 0; i < 350000000; i++) + { + x = (*p) (3); + p = table[x]; + } + printf ("done:%d\n", x); +} + +/* { dg-final-use-not-autofdo { scan-pgo-wpa-ipa-dump "2 \\(200.00%\\) speculations produced." "profile_estimate" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c new file mode 100644 index 00000000000..a8c6e365fb9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c @@ -0,0 +1,22 @@ +/* It seems there is no way to avoid the other source of mulitple + source testcase from being compiled independently. Just avoid + error. */ +#ifdef DOJOB +int +one (int a) +{ + return 1; +} + +int +two (int a) +{ + return 0; +} +#else +int +main() +{ + return 0; +} +#endif diff --git a/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c new file mode 100644 index 00000000000..9b996fcf0ed --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c @@ -0,0 +1,40 @@ +/* { dg-require-effective-target lto } */ +/* { dg-additional-sources "crossmodule-indir-call-topn-1a.c" } */ +/* { dg-require-profiling "-fprofile-generate" } */ +/* { dg-options "-O2 -flto -DDOJOB=1 -fdump-ipa-profile_estimate" } */ + +#include <stdio.h> + +typedef int (*fptr) (int); +int +one (int a); + +int +two (int a); + +fptr table[] = {&one, &two}; + +int foo () +{ + int i, x; + fptr p = &one; + + x = one (3); + + for (i = 0; i < 350000000; i++) + { + x = (*p) (3); + p = table[x]; + } + return x; +} + +int +main() +{ + int x = foo (); + printf ("done:%d\n", x); +} + +/* { dg-final-use-not-autofdo { scan-pgo-wpa-ipa-dump "2 \\(200.00%\\) speculations produced." "profile_estimate" } } */ + diff --git a/gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-topn.c b/gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-topn.c new file mode 100644 index 00000000000..063996c71df --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-topn.c @@ -0,0 +1,37 @@ +/* { dg-require-profiling "-fprofile-generate" } */ +/* { dg-options "-O2 -fdump-ipa-profile_estimate" } */ + +#include <stdio.h> + +typedef int (*fptr) (int); +int +one (int a) +{ + return 1; +} + +int +two (int a) +{ + return 0; +} + +fptr table[] = {&one, &two}; + +int +main() +{ + int i, x; + fptr p = &one; + + one (3); + + for (i = 0; i < 350000000; i++) + { + x = (*p) (3); + p = table[x]; + } + printf ("done:%d\n", x); +} + +/* { dg-final-use-not-autofdo { scan-ipa-dump "2 \\(200.00%\\) speculations produced." "profile_estimate" } } */ diff --git a/gcc/testsuite/lib/scandump.exp b/gcc/testsuite/lib/scandump.exp index 4c7d904cf77..d6ba350acc8 100644 --- a/gcc/testsuite/lib/scandump.exp +++ b/gcc/testsuite/lib/scandump.exp @@ -70,6 +70,7 @@ proc scan-dump { args } { set output_file "[glob -nocomplain $dumpbase.[lindex $args 2]]" if { $output_file == "" } { verbose -log "$testcase: dump file does not exist" + verbose -log "dump file: $dumpbase.$suf" unresolved "$testname" return } diff --git a/gcc/testsuite/lib/scanwpaipa.exp b/gcc/testsuite/lib/scanwpaipa.exp index d00b400dd42..2f58823a4f3 100644 --- a/gcc/testsuite/lib/scanwpaipa.exp +++ b/gcc/testsuite/lib/scanwpaipa.exp @@ -45,6 +45,29 @@ proc scan-wpa-ipa-dump { args } { } } +# Argument 0 is the regexp to match +# Argument 1 is the name of the dumped ipa pass +# Argument 2 handles expected failures and the like +proc scan-pgo-wpa-ipa-dump { args } { + + if { [llength $args] < 2 } { + error "scan-pgo-wpa-ipa-dump: too few arguments" + return + } + if { [llength $args] > 3 } { + error "scan-pgo-wpa-ipa-dump: too many arguments" + return + } + if { [llength $args] >= 3 } { + scan-dump "pgo-wpa-ipa" [lindex $args 0] \ + "\[0-9\]\[0-9\]\[0-9\]i.[lindex $args 1]" ".x02.wpa" \ + [lindex $args 2] + } else { + scan-dump "pgo-wpa-ipa" [lindex $args 0] \ + "\[0-9\]\[0-9\]\[0-9\]i.[lindex $args 1]" ".x02.wpa" + } +} + # Call pass if pattern is present given number of times, otherwise fail. # Argument 0 is the regexp to match # Argument 1 is number of times the regexp must be found diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 51aa06566b1..2197769bf17 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -2187,9 +2187,10 @@ copy_bb (copy_body_data *id, basic_block bb, num, den, true); - /* Speculative calls consist of two edges - direct and - indirect. Duplicate the whole thing and distribute - frequencies accordingly. */ + /* A speculative call is consist of edges - indirect edge + and direct edges (one indirect edeg may has multiple + direct edges). Duplicate the whole thing and + distribute frequencies accordingly. */ if (edge->speculative) { struct cgraph_edge *direct, *indirect; @@ -2197,8 +2198,33 @@ copy_bb (copy_body_data *id, basic_block bb, gcc_assert (!edge->indirect_unknown_callee); old_edge->speculative_call_info (direct, indirect, ref); + while (old_edge->next_callee + && old_edge->next_callee->speculative + && indirect->num_speculative_call_targets_p () + > 1) + { + id->dst_node->clone_reference (ref, stmt); + + edge = old_edge->next_callee; + edge = edge->clone (id->dst_node, call_stmt, + gimple_uid (stmt), num, den, + true); + old_edge = old_edge->next_callee; + gcc_assert (!edge->indirect_unknown_callee); + + /* If the indirect edge has multiple speculative + calls, iterate through all direct calls + associated to the speculative call and clone + all related direct edges before cloning the + related indirect edge. */ + old_edge->speculative_call_info (direct, indirect, + ref); + } profile_count indir_cnt = indirect->count; + + /* Duplicate the indirect edge after all direct edges + cloned. */ indirect = indirect->clone (id->dst_node, call_stmt, gimple_uid (stmt), num, den, diff --git a/gcc/value-prof.c b/gcc/value-prof.c index 81994964148..9a2c46252c6 100644 --- a/gcc/value-prof.c +++ b/gcc/value-prof.c @@ -106,7 +106,7 @@ static bool gimple_divmod_fixed_value_transform (gimple_stmt_iterator *); static bool gimple_mod_pow2_value_transform (gimple_stmt_iterator *); static bool gimple_mod_subtract_transform (gimple_stmt_iterator *); static bool gimple_stringops_transform (gimple_stmt_iterator *); -static bool gimple_ic_transform (gimple_stmt_iterator *); +static void gimple_ic_transform (gimple_stmt_iterator *); /* Allocate histogram value. */ @@ -616,8 +616,7 @@ gimple_value_profile_transformations (void) if (gimple_mod_subtract_transform (&gsi) || gimple_divmod_fixed_value_transform (&gsi) || gimple_mod_pow2_value_transform (&gsi) - || gimple_stringops_transform (&gsi) - || gimple_ic_transform (&gsi)) + || gimple_stringops_transform (&gsi)) { stmt = gsi_stmt (gsi); changed = true; @@ -628,6 +627,9 @@ gimple_value_profile_transformations (void) gsi = gsi_for_stmt (stmt); } } + + /* The function never thansforms a GIMPLE statement. */ + gimple_ic_transform (&gsi); } } @@ -1386,13 +1388,12 @@ gimple_ic (gcall *icall_stmt, struct cgraph_node *direct_call, return dcall_stmt; } -/* - For every checked indirect/virtual call determine if most common pid of - function/class method has probability more than 50%. If yes modify code of - this call to: - */ +/* There maybe multiple indirect targets in histogram. Check every + indirect/virtual call if callee function exists, if not exist, leave it to + LTO stage for later process. Modify code of this indirect call to an if-else + structure in ipa-profile finally. */ -static bool +static void gimple_ic_transform (gimple_stmt_iterator *gsi) { gcall *stmt; @@ -1402,52 +1403,58 @@ gimple_ic_transform (gimple_stmt_iterator *gsi) stmt = dyn_cast <gcall *> (gsi_stmt (*gsi)); if (!stmt) - return false; + return; if (gimple_call_fndecl (stmt) != NULL_TREE) - return false; + return; if (gimple_call_internal_p (stmt)) - return false; + return; histogram = gimple_histogram_value_of_type (cfun, stmt, HIST_TYPE_INDIR_CALL); if (!histogram) - return false; + return; - if (!get_nth_most_common_value (NULL, "indirect call", histogram, &val, - &count, &all)) - return false; + count = 0; + all = histogram->hvalue.counters[0]; - if (4 * count <= 3 * all) - return false; + for (unsigned j = 0; j < GCOV_TOPN_VALUES; j++) + { + if (!get_nth_most_common_value (NULL, "indirect call", histogram, &val, + &count, &all, j)) + return; - direct_call = find_func_by_profile_id ((int)val); + /* Minimum probability. should be higher than 25%. */ + if (4 * count <= all) + return; - if (direct_call == NULL) - { - if (val) + direct_call = find_func_by_profile_id ((int) val); + + if (direct_call == NULL) { - if (dump_enabled_p ()) - dump_printf_loc (MSG_MISSED_OPTIMIZATION, stmt, - "Indirect call -> direct call from other " - "module %T=> %i (will resolve only with LTO)\n", - gimple_call_fn (stmt), (int)val); + if (val) + { + if (dump_enabled_p ()) + dump_printf_loc ( + MSG_MISSED_OPTIMIZATION, stmt, + "Indirect call -> direct call from other " + "module %T=> %i (will resolve only with LTO)\n", + gimple_call_fn (stmt), (int) val); + } + return; } - return false; - } - if (dump_enabled_p ()) - { - dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, stmt, - "Indirect call -> direct call " - "%T => %T transformation on insn postponed\n", - gimple_call_fn (stmt), direct_call->decl); - dump_printf_loc (MSG_NOTE, stmt, - "hist->count %" PRId64 - " hist->all %" PRId64"\n", count, all); + if (dump_enabled_p ()) + { + dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, stmt, + "Indirect call -> direct call " + "%T => %T transformation on insn postponed\n", + gimple_call_fn (stmt), direct_call->decl); + dump_printf_loc (MSG_NOTE, stmt, + "hist->count %" PRId64 " hist->all %" PRId64 "\n", + count, all); + } } - - return true; } /* Return true if the stringop CALL shall be profiled. SIZE_ARG be diff --git a/gcc/value-prof.h b/gcc/value-prof.h index bf024a3854c..81c615dadec 100644 --- a/gcc/value-prof.h +++ b/gcc/value-prof.h @@ -89,7 +89,6 @@ void verify_histograms (void); void free_histograms (function *); void stringop_block_profile (gimple *, unsigned int *, HOST_WIDE_INT *); gcall *gimple_ic (gcall *, struct cgraph_node *, profile_probability); -bool check_ic_target (gcall *, struct cgraph_node *); bool get_nth_most_common_value (gimple *stmt, const char *counter_type, histogram_value hist, gcov_type *value, gcov_type *count, gcov_type *all,
On 1/13/20 4:23 AM, luoxhu wrote:
> Thanks a lot! Rebased & updated, will commit below patch shortly when git push is ready.
Hello.
I'm pretty sure the patch contains failure of the following tests:
FAIL: gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c scan-pgo-wpa-ipa-dump profile_estimate "2 \\(200.00%\\) speculations produced."
FAIL: gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c scan-pgo-wpa-ipa-dump profile_estimate "2 \\(200.00%\\) speculations produced."
FAIL: gcc.dg/tree-prof/crossmodule-indircall-1.c execution, -fprofile-use -D_PROFILE_USE
Can you please take a look?
Thanks,
Martin
Hi, On 2020/1/14 21:03, Martin Liška wrote: > On 1/13/20 4:23 AM, luoxhu wrote: >> Thanks a lot! Rebased & updated, will commit below patch shortly when >> git push is ready. > > Hello. > > I'm pretty sure the patch contains failure of the following tests: > > FAIL: gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c > scan-pgo-wpa-ipa-dump profile_estimate "2 \\(200.00%\\) speculations > produced." > FAIL: gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c > scan-pgo-wpa-ipa-dump profile_estimate "2 \\(200.00%\\) speculations > produced." > FAIL: gcc.dg/tree-prof/crossmodule-indircall-1.c execution,   > -fprofile-use -D_PROFILE_USE > > Can you please take a look? Thanks for reporting. This seems fails only on some platforms. I tested it before commit and just verified it again on my Power8-LE with gcc.sum andd log attached. I suppose you are trying on x86 platforms and sorry that I don't have one at hand, these failures should be easy to fix, If not, I will investigate it after returning from Chinese New Year vacation. make check-gcc RUNTESTFLAGS="tree-prof.exp=crossmodule-* -v -v" > log > Thanks, > Martin Test Run By luoxhu on Tue Jan 14 08:22:32 2020 Native configuration is powerpc64le-unknown-linux-gnu === gcc tests === Schedule of variations: unix Running target unix Running /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp ... PASS: gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c compilation, -fprofile-generate -D_PROFILE_GENERATE PASS: gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c execution, -fprofile-generate -D_PROFILE_GENERATE PASS: gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c compilation, -fprofile-use -D_PROFILE_USE PASS: gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c execution, -fprofile-use -D_PROFILE_USE PASS: gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c scan-pgo-wpa-ipa-dump profile_estimate "2 \\(200.00%\\) speculations produced." PASS: gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c compilation, -fprofile-generate -D_PROFILE_GENERATE PASS: gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c execution, -fprofile-generate -D_PROFILE_GENERATE PASS: gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c compilation, -fprofile-use -D_PROFILE_USE PASS: gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c execution, -fprofile-use -D_PROFILE_USE PASS: gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c compilation, -fprofile-generate -D_PROFILE_GENERATE PASS: gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c execution, -fprofile-generate -D_PROFILE_GENERATE PASS: gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c compilation, -fprofile-use -D_PROFILE_USE PASS: gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c execution, -fprofile-use -D_PROFILE_USE PASS: gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c scan-pgo-wpa-ipa-dump profile_estimate "2 \\(200.00%\\) speculations produced." PASS: gcc.dg/tree-prof/crossmodule-indircall-1.c compilation, -fprofile-generate -D_PROFILE_GENERATE PASS: gcc.dg/tree-prof/crossmodule-indircall-1.c execution, -fprofile-generate -D_PROFILE_GENERATE PASS: gcc.dg/tree-prof/crossmodule-indircall-1.c compilation, -fprofile-use -D_PROFILE_USE PASS: gcc.dg/tree-prof/crossmodule-indircall-1.c execution, -fprofile-use -D_PROFILE_USE PASS: gcc.dg/tree-prof/crossmodule-indircall-1a.c compilation, -fprofile-generate -D_PROFILE_GENERATE PASS: gcc.dg/tree-prof/crossmodule-indircall-1a.c execution, -fprofile-generate -D_PROFILE_GENERATE PASS: gcc.dg/tree-prof/crossmodule-indircall-1a.c compilation, -fprofile-use -D_PROFILE_USE PASS: gcc.dg/tree-prof/crossmodule-indircall-1a.c execution, -fprofile-use -D_PROFILE_USE UNSUPPORTED: gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c -fauto-profile UNSUPPORTED: gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c -fauto-profile UNSUPPORTED: gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c -fauto-profile UNSUPPORTED: gcc.dg/tree-prof/crossmodule-indircall-1.c -fauto-profile UNSUPPORTED: gcc.dg/tree-prof/crossmodule-indircall-1a.c -fauto-profile === gcc Summary === # of expected passes 22 # of unsupported tests 5 /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc version 10.0.0 20200114 (experimental) (GCC) make[1]: Entering directory '/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc' rm -rf testsuite/gcc-parallel make[2]: Entering directory '/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc' (rootme=`${PWDCMD-pwd}`; export rootme; \ srcdir=`cd ../../gcc-trunk/gcc; ${PWDCMD-pwd}` ; export srcdir ; \ if [ -n "" ] \ && [ -n "$GCC_RUNTEST_PARALLELIZE_DIR" ] \ && [ -f testsuite/gcc-parallel/finished ]; then \ rm -rf testsuite/gcc; \ else \ cd testsuite/gcc; \ rm -f tmp-site.exp; \ sed '/set tmpdir/ s|testsuite$|testsuite/gcc|' \ < ../../site.exp > tmp-site.exp; \ /bin/sh ${srcdir}/../move-if-change tmp-site.exp site.exp; \ EXPECT=`if [ -f ${rootme}/../expect/expect ] ; then echo ${rootme}/../expect/expect ; else echo expect ; fi` ; export EXPECT ; \ if [ -f ${rootme}/../expect/expect ] ; then \ TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWDCMD-pwd}` ; \ export TCL_LIBRARY ; \ fi ; \ `if [ -f ${srcdir}/../dejagnu/runtest ] ; then echo ${srcdir}/../dejagnu/runtest ; else echo runtest; fi` --tool gcc tree-prof.exp=crossmodule-* -v -v; \ if [ -n "$GCC_RUNTEST_PARALLELIZE_DIR" ] ; then \ touch ${rootme}/testsuite/gcc-parallel/finished; \ fi ; \ fi ) Expect binary is expect Looking for /usr/share/dejagnu/runtest.exp. Using /usr/share/dejagnu/runtest.exp as main test driver Verbose level is 2 Login name is luoxhu Looking for ~/.dejagnurc Looking for /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/site.exp Found /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/site.exp Using test sources in /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite Using test binaries in /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc Tool root directory is /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite Using /usr/share/dejagnu to find libraries Looking for /usr/share/dejagnu/site.exp Found /usr/share/dejagnu/site.exp Looking for library file ../lib/utils.exp Looking for library file /usr/share/dejagnu/utils.exp Loading /usr/share/dejagnu/utils.exp Looking for library file ../lib/framework.exp Looking for library file /usr/share/dejagnu/framework.exp Loading /usr/share/dejagnu/framework.exp Looking for library file ../lib/debugger.exp Looking for library file /usr/share/dejagnu/debugger.exp Loading /usr/share/dejagnu/debugger.exp Looking for library file ../lib/remote.exp Looking for library file /usr/share/dejagnu/remote.exp Loading /usr/share/dejagnu/remote.exp Looking for library file ../lib/telnet.exp Looking for library file /usr/share/dejagnu/telnet.exp Loading /usr/share/dejagnu/telnet.exp Looking for library file ../lib/rlogin.exp Looking for library file /usr/share/dejagnu/rlogin.exp Loading /usr/share/dejagnu/rlogin.exp Looking for library file ../lib/kermit.exp Looking for library file /usr/share/dejagnu/kermit.exp Loading /usr/share/dejagnu/kermit.exp Looking for library file ../lib/tip.exp Looking for library file /usr/share/dejagnu/tip.exp Loading /usr/share/dejagnu/tip.exp Looking for library file ../lib/rsh.exp Looking for library file /usr/share/dejagnu/rsh.exp Loading /usr/share/dejagnu/rsh.exp Looking for library file ../lib/ftp.exp Looking for library file /usr/share/dejagnu/ftp.exp Loading /usr/share/dejagnu/ftp.exp Looking for library file ../lib/target.exp Looking for library file /usr/share/dejagnu/target.exp Loading /usr/share/dejagnu/target.exp Looking for library file ../lib/targetdb.exp Looking for library file /usr/share/dejagnu/targetdb.exp Loading /usr/share/dejagnu/targetdb.exp Looking for library file ../lib/libgloss.exp Looking for library file /usr/share/dejagnu/libgloss.exp Loading /usr/share/dejagnu/libgloss.exp Loading library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/gcc.exp Looking for library file ../lib/prune.exp Looking for library file /usr/share/dejagnu/prune.exp Looking for library file /usr/share/dejagnu/lib/prune.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/prune.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/prune.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/prune.exp Looking for library file ../lib/multiline.exp Looking for library file /usr/share/dejagnu/multiline.exp Looking for library file /usr/share/dejagnu/lib/multiline.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/multiline.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/multiline.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/multiline.exp Looking for library file ../lib/gcc-defs.exp Looking for library file /usr/share/dejagnu/gcc-defs.exp Looking for library file /usr/share/dejagnu/lib/gcc-defs.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/gcc-defs.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/gcc-defs.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/gcc-defs.exp Looking for library file ../lib/target-libpath.exp Looking for library file /usr/share/dejagnu/target-libpath.exp Looking for library file /usr/share/dejagnu/lib/target-libpath.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/target-libpath.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-libpath.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-libpath.exp Looking for library file ../lib/wrapper.exp Looking for library file /usr/share/dejagnu/wrapper.exp Looking for library file /usr/share/dejagnu/lib/wrapper.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/wrapper.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/wrapper.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/wrapper.exp Looking for library file ../lib/target-utils.exp Looking for library file /usr/share/dejagnu/target-utils.exp Looking for library file /usr/share/dejagnu/lib/target-utils.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/target-utils.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-utils.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-utils.exp Looking for library file ../lib/target-supports.exp Looking for library file /usr/share/dejagnu/target-supports.exp Looking for library file /usr/share/dejagnu/lib/target-supports.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/target-supports.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-supports.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-supports.exp Looking for library file ../lib/timeout.exp Looking for library file /usr/share/dejagnu/timeout.exp Looking for library file /usr/share/dejagnu/lib/timeout.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/timeout.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/timeout.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/timeout.exp Testing gcc Running only tests tree-prof.exp=crossmodule-* Opening log files in . Test Run By luoxhu on Tue Jan 14 08:22:32 2020 Checking powerpc64le-unknown-linux-gnu against powerpc64le-unknown-linux-gnu Native configuration is powerpc64le-unknown-linux-gnu === gcc tests === setting trap for SIGTERM to terminated setting trap for SIGINT to interrupted by user setting trap for SIGQUIT to interrupted by user dirlist is /usr/share/dejagnu/baseboards Looking for standard board description file for build /usr/share/dejagnu/baseboards/standard.exp Looking for board description file for build /usr/share/dejagnu/baseboards/genoa.exp pushing config for build, name is genoa dirlist is /usr/share/dejagnu/baseboards Looking for standard board description file for host /usr/share/dejagnu/baseboards/standard.exp Looking for board description file for host /usr/share/dejagnu/baseboards/genoa.exp pushing config for host, name is genoa Schedule of variations: unix target is unix Running target unix Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/config/base-config.exp Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/../config/base-config.exp Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/../../config/base-config.exp Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/../../../config/base-config.exp dirlist is /usr/share/dejagnu/baseboards/genoa /usr/share/dejagnu/baseboards Looking for standard board description file for target /usr/share/dejagnu/baseboards/genoa/standard.exp Looking for standard board description file for target /usr/share/dejagnu/baseboards/standard.exp Looking for board description file for target /usr/share/dejagnu/baseboards/genoa/unix.exp Looking for board description file for target /usr/share/dejagnu/baseboards/unix.exp Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target. Looking for generic interface file for target /usr/share/dejagnu/config/unix.exp Using /usr/share/dejagnu/config/unix.exp as generic interface file for target. /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/./xgcc /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/../xgcc Checking "*-*-cygwin*" against "powerpc64le-unknown-linux-gnu" Checking "alpha*-*" against "powerpc64le-unknown-linux-gnu" Checking "sparc64-*-linux-gnu" against "powerpc64le-unknown-linux-gnu" Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/config/unix.exp Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/config/gnu.exp Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/config/default.exp Using /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/config/default.exp as tool-and-target-specific interface file. Looking for library file ../lib/standard.exp Looking for library file /usr/share/dejagnu/standard.exp Loading /usr/share/dejagnu/standard.exp pushing config for target, name is unix Top level testsuite dirs are /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.c-torture /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg-selftests /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.misc-tests /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.src /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.test-framework trying to glob /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.c-torture/compile/compile.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.c-torture/execute/execute.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/asan/asan.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/atomic/atomic.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/autopar/autopar.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/charset/charset.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/compat/compat.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/compat/struct-layout-1.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/cpp/cpp.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/cpp/trad/trad.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/debug/debug.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/dfp/dfp.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/dg.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/fixed-point/fixed-point.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/format/format.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/goacc-gomp/goacc-gomp.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/goacc/goacc.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/gomp/gomp.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/graphite/graphite.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/guality/guality.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/ipa/ipa.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/lto/lto.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/noncompile/noncompile.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/params/params.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/pch/pch.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/plugin/plugin.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/rtl/rtl.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/sancov/sancov.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/special/mips-abi.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/special/special.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/sso/sso.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tls/tls.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tm/tm.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/torture/dg-torture.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/torture/tls/tls.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp in tree-prof.exp Running /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp ... /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/./xgcc /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/../xgcc Profiling argument is <-fprofile-generate> Checking "powerpc-ibm-aix*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target tls_runtime: checking unix check_compile tool: gcc for tls_runtime doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ tls_runtime115344.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -lm -o tls_runtime115344.exe Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ tls_runtime115344.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -lm -o tls_runtime115344.exe (timeout = 300) pid is 115366 -115366 waitres is 115366 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu loading to unix Setting LD_LIBRARY_PATH to :/home/luoxhu/local/lib/ spawning command ./tls_runtime115344.exe exp9 file6 Executed ./tls_runtime115344.exe, status 0 check_runtime_nocache tls_runtime: status is <pass> check_cached_effective_target tls_runtime: returning 1 for unix Checking "*-*-solaris2*" against "powerpc64le-unknown-linux-gnu" Checking "mips*-*-*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-mingw*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-cygwin*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target uclibc: checking unix check_compile tool: gcc for uclibc doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -c -o uclibc115344.o uclibc115344.c Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -c -o uclibc115344.o uclibc115344.c (timeout = 300) pid is 115379 -115379 waitres is 115379 exp6 0 1 close result is 115379 exp6 0 1 output is uclibc115344.c:4:3: error: #error !__UCLIBC__ status 1 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu compiler exited with status 1 output is: uclibc115344.c:4:3: error: #error !__UCLIBC__ check_cached_effective_target uclibc: returning 0 for unix check_cached_effective_target profiling_available: checking unix Checking "aarch64*-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "am3*-*-linux*" against "powerpc64le-unknown-linux-gnu" Checking "amdgcn-*-*" against "powerpc64le-unknown-linux-gnu" Checking "arm*-*-eabi*" against "powerpc64le-unknown-linux-gnu" Checking "arm*-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "arm*-*-symbianelf*" against "powerpc64le-unknown-linux-gnu" Checking "avr-*-*" against "powerpc64le-unknown-linux-gnu" Checking "bfin-*-*" against "powerpc64le-unknown-linux-gnu" Checking "cris-*-*" against "powerpc64le-unknown-linux-gnu" Checking "crisv32-*-*" against "powerpc64le-unknown-linux-gnu" Checking "csky-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "fido-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "h8300-*-*" against "powerpc64le-unknown-linux-gnu" Checking "lm32-*-*" against "powerpc64le-unknown-linux-gnu" Checking "m32c-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "m68k-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "m68k-*-uclinux*" against "powerpc64le-unknown-linux-gnu" Checking "mips*-*-elf*" against "powerpc64le-unknown-linux-gnu" Checking "mmix-*-*" against "powerpc64le-unknown-linux-gnu" Checking "mn10300-*-elf*" against "powerpc64le-unknown-linux-gnu" Checking "moxie-*-elf*" against "powerpc64le-unknown-linux-gnu" Checking "msp430-*-*" against "powerpc64le-unknown-linux-gnu" Checking "nds32*-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "nios2-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "nvptx-*-*" against "powerpc64le-unknown-linux-gnu" Checking "powerpc-*-eabi*" against "powerpc64le-unknown-linux-gnu" Checking "powerpc-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "pru-*-*" against "powerpc64le-unknown-linux-gnu" Checking "rx-*-*" against "powerpc64le-unknown-linux-gnu" Checking "tic6x-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "visium-*-*" against "powerpc64le-unknown-linux-gnu" Checking "xstormy16-*" against "powerpc64le-unknown-linux-gnu" Checking "xtensa*-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "*-*-rtems*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-vxworks*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target profiling_available: returning 1 for unix check_compile tool: gcc for profiling doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ profiling115344.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -pg -lm -o profiling115344.exe Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ profiling115344.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -pg -lm -o profiling115344.exe (timeout = 300) pid is 115383 -115383 waitres is 115383 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Looking for library file ../lib/profopt.exp Looking for library file /usr/share/dejagnu/profopt.exp Looking for library file /usr/share/dejagnu/lib/profopt.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/profopt.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/profopt.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/profopt.exp Looking for library file ../lib/dg.exp Looking for library file /usr/share/dejagnu/dg.exp Loading /usr/share/dejagnu/dg.exp Looking for library file ../lib/gcc-dg.exp Looking for library file /usr/share/dejagnu/gcc-dg.exp Looking for library file /usr/share/dejagnu/lib/gcc-dg.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/gcc-dg.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/gcc-dg.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/gcc-dg.exp Looking for library file ../lib/file-format.exp Looking for library file /usr/share/dejagnu/file-format.exp Looking for library file /usr/share/dejagnu/lib/file-format.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/file-format.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/file-format.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/file-format.exp Looking for library file ../lib/target-supports-dg.exp Looking for library file /usr/share/dejagnu/target-supports-dg.exp Looking for library file /usr/share/dejagnu/lib/target-supports-dg.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/target-supports-dg.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-supports-dg.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-supports-dg.exp Looking for library file ../lib/scanasm.exp Looking for library file /usr/share/dejagnu/scanasm.exp Looking for library file /usr/share/dejagnu/lib/scanasm.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/scanasm.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanasm.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanasm.exp Looking for library file ../lib/scanrtl.exp Looking for library file /usr/share/dejagnu/scanrtl.exp Looking for library file /usr/share/dejagnu/lib/scanrtl.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/scanrtl.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanrtl.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanrtl.exp Looking for library file ../lib/scandump.exp Looking for library file /usr/share/dejagnu/scandump.exp Looking for library file /usr/share/dejagnu/lib/scandump.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/scandump.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scandump.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scandump.exp Looking for library file ../lib/scantree.exp Looking for library file /usr/share/dejagnu/scantree.exp Looking for library file /usr/share/dejagnu/lib/scantree.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/scantree.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scantree.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scantree.exp Looking for library file ../lib/scanltranstree.exp Looking for library file /usr/share/dejagnu/scanltranstree.exp Looking for library file /usr/share/dejagnu/lib/scanltranstree.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/scanltranstree.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanltranstree.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanltranstree.exp Looking for library file ../lib/scanipa.exp Looking for library file /usr/share/dejagnu/scanipa.exp Looking for library file /usr/share/dejagnu/lib/scanipa.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/scanipa.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanipa.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanipa.exp Looking for library file ../lib/scanwpaipa.exp Looking for library file /usr/share/dejagnu/scanwpaipa.exp Looking for library file /usr/share/dejagnu/lib/scanwpaipa.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/scanwpaipa.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanwpaipa.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanwpaipa.exp Looking for library file ../lib/scanlang.exp Looking for library file /usr/share/dejagnu/scanlang.exp Looking for library file /usr/share/dejagnu/lib/scanlang.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/scanlang.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanlang.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanlang.exp Looking for library file ../lib/timeout-dg.exp Looking for library file /usr/share/dejagnu/timeout-dg.exp Looking for library file /usr/share/dejagnu/lib/timeout-dg.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/timeout-dg.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/timeout-dg.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/timeout-dg.exp Looking for library file ../lib/torture-options.exp Looking for library file /usr/share/dejagnu/torture-options.exp Looking for library file /usr/share/dejagnu/lib/torture-options.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/torture-options.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/torture-options.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/torture-options.exp Looking for library file ../lib/fortran-modules.exp Looking for library file /usr/share/dejagnu/fortran-modules.exp Looking for library file /usr/share/dejagnu/lib/fortran-modules.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/fortran-modules.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/fortran-modules.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/fortran-modules.exp Checking pattern "*-*-cygwin*" with powerpc64le-unknown-linux-gnu Checking "*-*-darwin*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-cygwin*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-mingw*" against "powerpc64le-unknown-linux-gnu" Checking "hppa*-*-hpux*" against "powerpc64le-unknown-linux-gnu" Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ -print-file-name=libgcc_s.so (timeout = 300) pid is 115393 -115393 waitres is 115393 exp6 0 0 output is /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/libgcc_s.so status 0 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ -print-multi-directory (timeout = 300) pid is 115396 -115396 waitres is 115396 exp6 0 0 output is . status 0 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ -print-multi-lib (timeout = 300) pid is 115399 -115399 waitres is 115399 exp6 0 0 output is .; status 0 Checking "*-*-cygwin*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-mingw*" against "powerpc64le-unknown-linux-gnu" LD_LIBRARY_PATH=:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc:/home/luoxhu/local/lib/ LD_RUN_PATH=:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc SHLIB_PATH=:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc:/home/luoxhu/local/lib/ LD_LIBRARY_PATH_32=:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc:/home/luoxhu/local/lib/ LD_LIBRARY_PATH_64=:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc:/home/luoxhu/local/lib/ DYLD_LIBRARY_PATH=:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc Checking "nvptx-*-*" against "powerpc64le-unknown-linux-gnu" Checking "amdgcn-*-*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target lto: checking unix check_compile tool: gcc for lto doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -flto -c -o lto115344.o lto115344.c Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -flto -c -o lto115344.o lto115344.c (timeout = 300) pid is 115402 -115402 waitres is 115402 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu check_cached_effective_target lto: returning 1 for unix check_compile tool: gcc for linker_plugin doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ linker_plugin115344.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -flto -fuse-linker-plugin -lm -o linker_plugin115344.exe Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ linker_plugin115344.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -flto -fuse-linker-plugin -lm -o linker_plugin115344.exe (timeout = 300) pid is 115409 -115409 waitres is 115409 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu check_cached_effective_target llvm_binutils: checking unix Checking "amdgcn*-*-*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target offload_gcn: checking unix check_compile tool: gcc for offload_gcn doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ offload_gcn115344.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -foffload=amdgcn-unknown-amdhsa -S -o offload_gcn115344.s Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ offload_gcn115344.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -foffload=amdgcn-unknown-amdhsa -S -o offload_gcn115344.s (timeout = 300) pid is 115427 -115427 waitres is 115427 exp6 0 1 close result is 115427 exp6 0 1 output is xgcc: fatal error: GCC is not configured to support amdgcn-unknown-amdhsa as offload target compilation terminated. status 1 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu compiler exited with status 1 output is: xgcc: fatal error: GCC is not configured to support amdgcn-unknown-amdhsa as offload target compilation terminated. check_cached_effective_target offload_gcn: returning 0 for unix check_cached_effective_target llvm_binutils: returning 0 for unix Testing gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c, Checking "nvptx-*-*" against "powerpc64le-unknown-linux-gnu" Checking "amdgcn-*-*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target lto: returning 1 for unix is-effective-target: lto 1 Profiling argument is <-fprofile-generate> Checking "powerpc-ibm-aix*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target tls_runtime: returning 1 for unix Checking "*-*-solaris2*" against "powerpc64le-unknown-linux-gnu" Checking "mips*-*-*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-mingw*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-cygwin*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target uclibc: returning 0 for unix check_cached_effective_target profiling_available: returning 1 for unix check_compile tool: gcc for profiling doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ profiling115344.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -pg -lm -o profiling115344.exe Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ profiling115344.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -pg -lm -o profiling115344.exe (timeout = 300) pid is 115430 -115430 waitres is 115430 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking "powerpc-ibm-aix*" against "powerpc64le-unknown-linux-gnu" doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c -O2 -flto -DDOJOB=1 -fdump-ipa-profile_estimate -fprofile-generate -D_PROFILE_GENERATE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-1.x01 Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c -O2 -flto -DDOJOB=1 -fdump-ipa-profile_estimate -fprofile-generate -D_PROFILE_GENERATE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-1.x01 (timeout = 300) pid is 115440 -115440 waitres is 115440 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu check_cached_effective_target exceptions_enabled: checking unix Checking "amdgcn*-*-*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target exceptions_enabled: checking unix check_compile tool: gcc for exceptions_enabled doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ exceptions_enabled115344.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -S -o exceptions_enabled115344.s Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ exceptions_enabled115344.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -S -o exceptions_enabled115344.s (timeout = 300) pid is 115462 -115462 waitres is 115462 exp6 0 1 close result is 115462 exp6 0 1 output is exceptions_enabled115344.c: In function 'foo': exceptions_enabled115344.c:4:7: error: 'throw' undeclared (first use in this function) exceptions_enabled115344.c:4:7: note: each undeclared identifier is reported only once for each function it appears in exceptions_enabled115344.c:4:12: error: expected ';' before numeric constant status 1 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu compiler exited with status 1 output is: exceptions_enabled115344.c: In function 'foo': exceptions_enabled115344.c:4:7: error: 'throw' undeclared (first use in this function) exceptions_enabled115344.c:4:7: note: each undeclared identifier is reported only once for each function it appears in exceptions_enabled115344.c:4:12: error: expected ';' before numeric constant check_cached_effective_target exceptions_enabled: returning 0 for unix check_cached_effective_target exceptions_enabled: returning 0 for unix Checking powerpc64le-unknown-linux-gnu against powerpc64le-unknown-linux-gnu loading to unix Setting LD_LIBRARY_PATH to :/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc::/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc:/home/luoxhu/local/lib/ spawning command /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-1.x01 exp9 file6 Executed /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-1.x01, status 0 done:0 doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c -O2 -flto -DDOJOB=1 -fdump-ipa-profile_estimate -fprofile-use -D_PROFILE_USE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-1.x02 Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c -O2 -flto -DDOJOB=1 -fdump-ipa-profile_estimate -fprofile-use -D_PROFILE_USE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-1.x02 (timeout = 300) pid is 115469 -115469 waitres is 115469 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu check_cached_effective_target exceptions_enabled: returning 0 for unix Checking powerpc64le-unknown-linux-gnu against powerpc64le-unknown-linux-gnu loading to unix Setting LD_LIBRARY_PATH to :/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc::/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc:/home/luoxhu/local/lib/ spawning command /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-1.x02 exp9 file6 Executed /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-1.x02, status 0 done:0 remove-build-file `{crossmodule-indir-call-topn-1.{c,exe},crossmodule-indir-call-topn-1a.{c,exe}}.{ltrans[0-9]*.,}[0-9][0-9][0-9]{l,i,r,t}.*' remove-build-file `crossmodule-indir-call-topn-1.c.068i.profile_estimate crossmodule-indir-call-topn-1a.c.068i.profile_estimate' Testing gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c, Checking "powerpc-ibm-aix*" against "powerpc64le-unknown-linux-gnu" doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -fprofile-generate -D_PROFILE_GENERATE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-1a.x01 Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -fprofile-generate -D_PROFILE_GENERATE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-1a.x01 (timeout = 300) pid is 115493 -115493 waitres is 115493 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu check_cached_effective_target exceptions_enabled: returning 0 for unix Checking powerpc64le-unknown-linux-gnu against powerpc64le-unknown-linux-gnu loading to unix Setting LD_LIBRARY_PATH to :/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc::/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc:/home/luoxhu/local/lib/ spawning command /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-1a.x01 exp9 file6 Executed /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-1a.x01, status 0 doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -fprofile-use -D_PROFILE_USE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-1a.x02 Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -fprofile-use -D_PROFILE_USE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-1a.x02 (timeout = 300) pid is 115506 -115506 waitres is 115506 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu check_cached_effective_target exceptions_enabled: returning 0 for unix Checking powerpc64le-unknown-linux-gnu against powerpc64le-unknown-linux-gnu loading to unix Setting LD_LIBRARY_PATH to :/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc::/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc:/home/luoxhu/local/lib/ spawning command /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-1a.x02 exp9 file6 Executed /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-1a.x02, status 0 Testing gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c, Checking "nvptx-*-*" against "powerpc64le-unknown-linux-gnu" Checking "amdgcn-*-*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target lto: returning 1 for unix is-effective-target: lto 1 Profiling argument is <-fprofile-generate> Checking "powerpc-ibm-aix*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target tls_runtime: returning 1 for unix Checking "*-*-solaris2*" against "powerpc64le-unknown-linux-gnu" Checking "mips*-*-*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-mingw*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-cygwin*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target uclibc: returning 0 for unix check_cached_effective_target profiling_available: returning 1 for unix check_compile tool: gcc for profiling doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ profiling115344.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -pg -lm -o profiling115344.exe Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ profiling115344.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -pg -lm -o profiling115344.exe (timeout = 300) pid is 115518 -115518 waitres is 115518 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking "powerpc-ibm-aix*" against "powerpc64le-unknown-linux-gnu" doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c -O2 -flto -DDOJOB=1 -fdump-ipa-profile_estimate -fprofile-generate -D_PROFILE_GENERATE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-2.x01 Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c -O2 -flto -DDOJOB=1 -fdump-ipa-profile_estimate -fprofile-generate -D_PROFILE_GENERATE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-2.x01 (timeout = 300) pid is 115528 -115528 waitres is 115528 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu check_cached_effective_target exceptions_enabled: returning 0 for unix Checking powerpc64le-unknown-linux-gnu against powerpc64le-unknown-linux-gnu loading to unix Setting LD_LIBRARY_PATH to :/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc::/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc:/home/luoxhu/local/lib/ spawning command /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-2.x01 exp9 file6 Executed /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-2.x01, status 0 done:0 doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c -O2 -flto -DDOJOB=1 -fdump-ipa-profile_estimate -fprofile-use -D_PROFILE_USE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-2.x02 Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c -O2 -flto -DDOJOB=1 -fdump-ipa-profile_estimate -fprofile-use -D_PROFILE_USE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-2.x02 (timeout = 300) pid is 115658 -115658 waitres is 115658 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu check_cached_effective_target exceptions_enabled: returning 0 for unix Checking powerpc64le-unknown-linux-gnu against powerpc64le-unknown-linux-gnu loading to unix Setting LD_LIBRARY_PATH to :/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc::/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc:/home/luoxhu/local/lib/ spawning command /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-2.x02 exp9 file6 Executed /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indir-call-topn-2.x02, status 0 done:0 remove-build-file `{crossmodule-indir-call-topn-2.{c,exe},crossmodule-indir-call-topn-1a.{c,exe}}.{ltrans[0-9]*.,}[0-9][0-9][0-9]{l,i,r,t}.*' remove-build-file `crossmodule-indir-call-topn-2.c.068i.profile_estimate crossmodule-indir-call-topn-1a.c.068i.profile_estimate' Testing gcc.dg/tree-prof/crossmodule-indircall-1.c, Checking "nvptx-*-*" against "powerpc64le-unknown-linux-gnu" Checking "amdgcn-*-*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target lto: returning 1 for unix is-effective-target: lto 1 Checking "powerpc-ibm-aix*" against "powerpc64le-unknown-linux-gnu" doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c -O3 -flto -DDOJOB=1 -fprofile-generate -D_PROFILE_GENERATE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indircall-1.x01 Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c -O3 -flto -DDOJOB=1 -fprofile-generate -D_PROFILE_GENERATE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indircall-1.x01 (timeout = 300) pid is 115682 -115682 waitres is 115682 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu check_cached_effective_target exceptions_enabled: returning 0 for unix Checking powerpc64le-unknown-linux-gnu against powerpc64le-unknown-linux-gnu loading to unix Setting LD_LIBRARY_PATH to :/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc::/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc:/home/luoxhu/local/lib/ spawning command /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indircall-1.x01 exp9 file6 Executed /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indircall-1.x01, status 0 doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c -O3 -flto -DDOJOB=1 -fprofile-use -D_PROFILE_USE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indircall-1.x02 Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c -O3 -flto -DDOJOB=1 -fprofile-use -D_PROFILE_USE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indircall-1.x02 (timeout = 300) pid is 115707 -115707 waitres is 115707 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu check_cached_effective_target exceptions_enabled: returning 0 for unix Checking powerpc64le-unknown-linux-gnu against powerpc64le-unknown-linux-gnu loading to unix Setting LD_LIBRARY_PATH to :/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc::/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc:/home/luoxhu/local/lib/ spawning command /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indircall-1.x02 exp9 file6 Executed /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indircall-1.x02, status 0 Testing gcc.dg/tree-prof/crossmodule-indircall-1a.c, Checking "powerpc-ibm-aix*" against "powerpc64le-unknown-linux-gnu" doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -fprofile-generate -D_PROFILE_GENERATE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indircall-1a.x01 Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -fprofile-generate -D_PROFILE_GENERATE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indircall-1a.x01 (timeout = 300) pid is 115731 -115731 waitres is 115731 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu check_cached_effective_target exceptions_enabled: returning 0 for unix Checking powerpc64le-unknown-linux-gnu against powerpc64le-unknown-linux-gnu loading to unix Setting LD_LIBRARY_PATH to :/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc::/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc:/home/luoxhu/local/lib/ spawning command /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indircall-1a.x01 exp9 file6 Executed /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indircall-1a.x01, status 0 doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -fprofile-use -D_PROFILE_USE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indircall-1a.x02 Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -fprofile-use -D_PROFILE_USE -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indircall-1a.x02 (timeout = 300) pid is 115744 -115744 waitres is 115744 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu check_cached_effective_target exceptions_enabled: returning 0 for unix Checking powerpc64le-unknown-linux-gnu against powerpc64le-unknown-linux-gnu loading to unix Setting LD_LIBRARY_PATH to :/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc::/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc:/home/luoxhu/local/lib/ spawning command /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indircall-1a.x02 exp9 file6 Executed /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gcc/crossmodule-indircall-1a.x02, status 0 Profiling argument is <-fauto-profile> Checking "i?86-*-linux*" against "powerpc64le-unknown-linux-gnu" Checking "x86_64-*-linux*" against "powerpc64le-unknown-linux-gnu" autofdo only supported on linux Profiling argument is <-fauto-profile> Checking "i?86-*-linux*" against "powerpc64le-unknown-linux-gnu" Checking "x86_64-*-linux*" against "powerpc64le-unknown-linux-gnu" autofdo only supported on linux Profiling argument is <-fauto-profile> Checking "i?86-*-linux*" against "powerpc64le-unknown-linux-gnu" Checking "x86_64-*-linux*" against "powerpc64le-unknown-linux-gnu" autofdo only supported on linux Profiling argument is <-fauto-profile> Checking "i?86-*-linux*" against "powerpc64le-unknown-linux-gnu" Checking "x86_64-*-linux*" against "powerpc64le-unknown-linux-gnu" autofdo only supported on linux Profiling argument is <-fauto-profile> Checking "i?86-*-linux*" against "powerpc64le-unknown-linux-gnu" Checking "x86_64-*-linux*" against "powerpc64le-unknown-linux-gnu" autofdo only supported on linux searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tree-ssa/tree-ssa.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/tsan/tsan.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/ubsan/ubsan.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/vect/vect.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/vmx/vmx.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/vxworks/vxworks.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg/weak/weak.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.dg-selftests/dg-final.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.misc-tests/acker1.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.misc-tests/arm-isr.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.misc-tests/bprob.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.misc-tests/dectest.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.misc-tests/dhry.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.misc-tests/gcov.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.misc-tests/godump.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.misc-tests/help.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.misc-tests/linkage.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.misc-tests/matrix1.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.misc-tests/mg-2.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.misc-tests/mg.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.misc-tests/options.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.misc-tests/output.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.misc-tests/sieve.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.misc-tests/sort2.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.src/maintainers.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/aarch64/aarch64.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/aarch64/acle/acle.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/aarch64/fp16/fp16.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/aarch64/simd/simd.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/aarch64/sve/aarch64-sve.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/aarch64/sve/pcs/aarch64-sve-pcs.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/aarch64/sve2/aarch64-sve2.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/aarch64/torture/aarch64-torture.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/alpha/alpha.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/arc/arc.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/arm/acle/acle.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/arm/arm.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/arm/cmse/cmse.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/arm/lto/lto.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/arm/multilib.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/arm/pure-code/pure-code.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/arm/simd/simd.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/avr/avr.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/avr/mmcu/avr-mmcu.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/avr/torture/avr-torture.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/bfin/bfin.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/bpf/bpf.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/cris/cris.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/cris/torture/cris-torture.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/csky/csky.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/epiphany/epiphany.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/frv/frv.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/h8300/h8300.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/hppa/hppa.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/i386/i386.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/i386/iamcu/abi-iamcu.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/i386/stackalign/stackalign.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/ia64/ia64.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/m68k/m68k.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/microblaze/microblaze.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/mips/inter/mips16-inter.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/mips/mips.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/msp430/msp430.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/nds32/nds32.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/nios2/nios2.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/nvptx/nvptx.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/or1k/or1k.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/powerpc/powerpc.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/powerpc/vsu/vsu.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/pru/pru.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/riscv/riscv.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/rl78/rl78.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/rx/rx.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/s390/s390.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/sh/sh.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/sh/torture/sh-torture.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/sparc/sparc.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/tic6x/builtins/c6x-builtins.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/tic6x/tic6x.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/vax/vax.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/visium/visium.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/x86_64/abi/abi-x86_64.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/xstormy16/xstormy16.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.target/xtensa/xtensa.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gcc.test-framework/test-framework.exp in tree-prof.exp === gcc Summary === # of expected passes 22 # of unsupported tests 5 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc -v (timeout = 300) pid is 115756 -115756 waitres is 115756 exp6 0 0 output is Using built-in specs. COLLECT_GCC=/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc COLLECT_LTO_WRAPPER=/home/luoxhu/local/gcc_10/libexec/gcc/powerpc64le-unknown-linux-gnu/10.0.0/lto-wrapper Target: powerpc64le-unknown-linux-gnu Configured with: ../gcc-trunk/configure --enable-languages=c,c++,fortran --prefix=/home/luoxhu/local/gcc_10/ --disable-libsanitizer --disable-bootstrap : (reconfigured) ../gcc-trunk/configure --prefix=/home/luoxhu/local/gcc_10/ --disable-libsanitizer --disable-bootstrap --enable-languages=c,c++,fortran,lto --no-create --no-recursion Thread model: posix Supported LTO compression algorithms: zlib gcc version 10.0.0 20200114 (experimental) (GCC) status 0 /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc version 10.0.0 20200114 (experimental) (GCC) runtest completed at Tue Jan 14 08:22:42 2020 make[2]: Leaving directory '/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc' rm -rf testsuite/g++-parallel make[2]: Entering directory '/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc' (rootme=`${PWDCMD-pwd}`; export rootme; \ srcdir=`cd ../../gcc-trunk/gcc; ${PWDCMD-pwd}` ; export srcdir ; \ if [ -n "" ] \ && [ -n "$GCC_RUNTEST_PARALLELIZE_DIR" ] \ && [ -f testsuite/g++-parallel/finished ]; then \ rm -rf testsuite/g++; \ else \ cd testsuite/g++; \ rm -f tmp-site.exp; \ sed '/set tmpdir/ s|testsuite$|testsuite/g++|' \ < ../../site.exp > tmp-site.exp; \ /bin/sh ${srcdir}/../move-if-change tmp-site.exp site.exp; \ EXPECT=`if [ -f ${rootme}/../expect/expect ] ; then echo ${rootme}/../expect/expect ; else echo expect ; fi` ; export EXPECT ; \ if [ -f ${rootme}/../expect/expect ] ; then \ TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWDCMD-pwd}` ; \ export TCL_LIBRARY ; \ fi ; \ `if [ -f ${srcdir}/../dejagnu/runtest ] ; then echo ${srcdir}/../dejagnu/runtest ; else echo runtest; fi` --tool g++ tree-prof.exp=crossmodule-* -v -v; \ if [ -n "$GCC_RUNTEST_PARALLELIZE_DIR" ] ; then \ touch ${rootme}/testsuite/g++-parallel/finished; \ fi ; \ fi ) Expect binary is expect Looking for /usr/share/dejagnu/runtest.exp. Using /usr/share/dejagnu/runtest.exp as main test driver Verbose level is 2 Login name is luoxhu Looking for ~/.dejagnurc Looking for /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/site.exp Found /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/site.exp Using test sources in /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite Using test binaries in /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++ Tool root directory is /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite Using /usr/share/dejagnu to find libraries Looking for /usr/share/dejagnu/site.exp Found /usr/share/dejagnu/site.exp Looking for library file ../lib/utils.exp Looking for library file /usr/share/dejagnu/utils.exp Loading /usr/share/dejagnu/utils.exp Looking for library file ../lib/framework.exp Looking for library file /usr/share/dejagnu/framework.exp Loading /usr/share/dejagnu/framework.exp Looking for library file ../lib/debugger.exp Looking for library file /usr/share/dejagnu/debugger.exp Loading /usr/share/dejagnu/debugger.exp Looking for library file ../lib/remote.exp Looking for library file /usr/share/dejagnu/remote.exp Loading /usr/share/dejagnu/remote.exp Looking for library file ../lib/telnet.exp Looking for library file /usr/share/dejagnu/telnet.exp Loading /usr/share/dejagnu/telnet.exp Looking for library file ../lib/rlogin.exp Looking for library file /usr/share/dejagnu/rlogin.exp Loading /usr/share/dejagnu/rlogin.exp Looking for library file ../lib/kermit.exp Looking for library file /usr/share/dejagnu/kermit.exp Loading /usr/share/dejagnu/kermit.exp Looking for library file ../lib/tip.exp Looking for library file /usr/share/dejagnu/tip.exp Loading /usr/share/dejagnu/tip.exp Looking for library file ../lib/rsh.exp Looking for library file /usr/share/dejagnu/rsh.exp Loading /usr/share/dejagnu/rsh.exp Looking for library file ../lib/ftp.exp Looking for library file /usr/share/dejagnu/ftp.exp Loading /usr/share/dejagnu/ftp.exp Looking for library file ../lib/target.exp Looking for library file /usr/share/dejagnu/target.exp Loading /usr/share/dejagnu/target.exp Looking for library file ../lib/targetdb.exp Looking for library file /usr/share/dejagnu/targetdb.exp Loading /usr/share/dejagnu/targetdb.exp Looking for library file ../lib/libgloss.exp Looking for library file /usr/share/dejagnu/libgloss.exp Loading /usr/share/dejagnu/libgloss.exp Loading library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/g++.exp Looking for library file ../lib/prune.exp Looking for library file /usr/share/dejagnu/prune.exp Looking for library file /usr/share/dejagnu/lib/prune.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/prune.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/prune.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/prune.exp Looking for library file ../lib/multiline.exp Looking for library file /usr/share/dejagnu/multiline.exp Looking for library file /usr/share/dejagnu/lib/multiline.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/multiline.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/multiline.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/multiline.exp Looking for library file ../lib/gcc-defs.exp Looking for library file /usr/share/dejagnu/gcc-defs.exp Looking for library file /usr/share/dejagnu/lib/gcc-defs.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/gcc-defs.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/gcc-defs.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/gcc-defs.exp Looking for library file ../lib/target-libpath.exp Looking for library file /usr/share/dejagnu/target-libpath.exp Looking for library file /usr/share/dejagnu/lib/target-libpath.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/target-libpath.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-libpath.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-libpath.exp Looking for library file ../lib/wrapper.exp Looking for library file /usr/share/dejagnu/wrapper.exp Looking for library file /usr/share/dejagnu/lib/wrapper.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/wrapper.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/wrapper.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/wrapper.exp Looking for library file ../lib/target-utils.exp Looking for library file /usr/share/dejagnu/target-utils.exp Looking for library file /usr/share/dejagnu/lib/target-utils.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/target-utils.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-utils.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-utils.exp Looking for library file ../lib/target-supports.exp Looking for library file /usr/share/dejagnu/target-supports.exp Looking for library file /usr/share/dejagnu/lib/target-supports.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/target-supports.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-supports.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-supports.exp Looking for library file ../lib/timeout.exp Looking for library file /usr/share/dejagnu/timeout.exp Looking for library file /usr/share/dejagnu/lib/timeout.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/timeout.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/timeout.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/timeout.exp Testing g++ Running only tests tree-prof.exp=crossmodule-* Opening log files in . Test Run By luoxhu on Tue Jan 14 08:22:42 2020 Checking powerpc64le-unknown-linux-gnu against powerpc64le-unknown-linux-gnu Native configuration is powerpc64le-unknown-linux-gnu === g++ tests === setting trap for SIGTERM to terminated setting trap for SIGINT to interrupted by user setting trap for SIGQUIT to interrupted by user dirlist is /usr/share/dejagnu/baseboards Looking for standard board description file for build /usr/share/dejagnu/baseboards/standard.exp Looking for board description file for build /usr/share/dejagnu/baseboards/genoa.exp pushing config for build, name is genoa dirlist is /usr/share/dejagnu/baseboards Looking for standard board description file for host /usr/share/dejagnu/baseboards/standard.exp Looking for board description file for host /usr/share/dejagnu/baseboards/genoa.exp pushing config for host, name is genoa Schedule of variations: unix target is unix Running target unix Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/config/base-config.exp Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/../config/base-config.exp Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/../../config/base-config.exp Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/../../../config/base-config.exp dirlist is /usr/share/dejagnu/baseboards/genoa /usr/share/dejagnu/baseboards Looking for standard board description file for target /usr/share/dejagnu/baseboards/genoa/standard.exp Looking for standard board description file for target /usr/share/dejagnu/baseboards/standard.exp Looking for board description file for target /usr/share/dejagnu/baseboards/genoa/unix.exp Looking for board description file for target /usr/share/dejagnu/baseboards/unix.exp Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target. Looking for generic interface file for target /usr/share/dejagnu/config/unix.exp Using /usr/share/dejagnu/config/unix.exp as generic interface file for target. /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/./xgcc /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/../xgcc Checking "*-*-cygwin*" against "powerpc64le-unknown-linux-gnu" Checking "alpha*-*" against "powerpc64le-unknown-linux-gnu" Checking "sparc64-*-linux-gnu" against "powerpc64le-unknown-linux-gnu" Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/config/unix.exp Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/config/gnu.exp Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/config/default.exp Using /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/config/default.exp as tool-and-target-specific interface file. Looking for library file ../lib/standard.exp Looking for library file /usr/share/dejagnu/standard.exp Loading /usr/share/dejagnu/standard.exp pushing config for target, name is unix Top level testsuite dirs are /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.old-deja /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.target trying to glob /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/asan/asan.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/bprob/bprob.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/charset/charset.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/compat/compat.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/compat/struct-layout-1.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/debug/debug.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/dfp/dfp.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/dg.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/gcov/gcov.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/goacc-gomp/goacc-gomp.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/goacc/goacc.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/gomp/gomp.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/graphite/graphite.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/guality/guality.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/lto/lto.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/pch/pch.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/plugin/plugin.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/simulate-thread/simulate-thread.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/special/ecos.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/tls/tls.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/tm/tm.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/torture/dg-torture.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/tree-prof/tree-prof.exp in tree-prof.exp Running /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/tree-prof/tree-prof.exp ... Checking pattern "*-*-cygwin*" with powerpc64le-unknown-linux-gnu Seeing if /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/xg++ exists. Didn't find file /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/xg++, returning c++ Seeing if /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ exists. Found file, returning /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ Checking pattern "*-dos-*" with powerpc64le-unknown-linux-gnu compiler is /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc /home/luoxhu/workspace/gcc-git/gcc-trunk_build/./powerpc64le-unknown-linux-gnu GCC path is . /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libstdc++-v3 Checking "*-*-darwin*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-cygwin*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-mingw*" against "powerpc64le-unknown-linux-gnu" Checking "hppa*-*-hpux*" against "powerpc64le-unknown-linux-gnu" shared lib extension: so Checking "*-*-darwin*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-cygwin*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-mingw*" against "powerpc64le-unknown-linux-gnu" Checking "hppa*-*-hpux*" against "powerpc64le-unknown-linux-gnu" Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ -print-file-name=libgcc_s.so (timeout = 300) pid is 115884 -115884 waitres is 115884 exp6 0 0 output is /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../libgcc_s.so status 0 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ -print-multi-directory (timeout = 300) pid is 115888 -115888 waitres is 115888 exp6 0 0 output is . status 0 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ -print-multi-lib (timeout = 300) pid is 115891 -115891 waitres is 115891 exp6 0 0 output is .; status 0 Checking "*-*-cygwin*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-mingw*" against "powerpc64le-unknown-linux-gnu" LD_LIBRARY_PATH=.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../..:/home/luoxhu/local/lib/ LD_RUN_PATH=.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../.. SHLIB_PATH=.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../.. LD_LIBRARY_PATH_32=.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../..:/home/luoxhu/local/lib/ LD_LIBRARY_PATH_64=.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../..:/home/luoxhu/local/lib/ DYLD_LIBRARY_PATH=.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../.. Checking "*-*-darwin*" against "powerpc64le-unknown-linux-gnu" ALWAYS_CXXFLAGS set to {additional_flags=-fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never } {additional_flags=-nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util} {ldflags= -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/ -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs} additional_flags=-fmessage-length=0 Profiling argument is <-fprofile-generate> Checking "powerpc-ibm-aix*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target tls_runtime: checking unix check_compile tool: g++ for tls_runtime /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/../../../libio/_G_config.h /home/luoxhu/workspace/../../../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/iostream.list /home/luoxhu/workspace/gcc-git/../../../libio/iostream.list /home/luoxhu/workspace/../../../../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/./libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/../libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/../../libio/Makefile.in /home/luoxhu/workspace/gcc-git/../../../libio/Makefile.in /home/luoxhu/workspace/../../../../libio/Makefile.in doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ tls_runtime115858.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/ -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs -lm -o tls_runtime115858.exe Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ tls_runtime115858.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/ -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs -lm -o tls_runtime115858.exe (timeout = 300) pid is 115894 -115894 waitres is 115894 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu loading to unix Setting LD_LIBRARY_PATH to .:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../..:.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../..:/home/luoxhu/local/lib/ spawning command ./tls_runtime115858.exe exp9 file6 Executed ./tls_runtime115858.exe, status 0 check_runtime_nocache tls_runtime: status is <pass> check_cached_effective_target tls_runtime: returning 1 for unix Checking "*-*-solaris2*" against "powerpc64le-unknown-linux-gnu" Checking "mips*-*-*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-mingw*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-cygwin*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target uclibc: checking unix check_compile tool: g++ for uclibc /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/../../../libio/_G_config.h /home/luoxhu/workspace/../../../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/iostream.list /home/luoxhu/workspace/gcc-git/../../../libio/iostream.list /home/luoxhu/workspace/../../../../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/./libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/../libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/../../libio/Makefile.in /home/luoxhu/workspace/gcc-git/../../../libio/Makefile.in /home/luoxhu/workspace/../../../../libio/Makefile.in doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -c -o uclibc115858.o uclibc115858.c Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -c -o uclibc115858.o uclibc115858.c (timeout = 300) pid is 115906 -115906 waitres is 115906 exp6 0 1 close result is 115906 exp6 0 1 output is uclibc115858.c:4:3: error: #error !__UCLIBC__ status 1 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu compiler exited with status 1 output is: uclibc115858.c:4:3: error: #error !__UCLIBC__ check_cached_effective_target uclibc: returning 0 for unix check_cached_effective_target profiling_available: checking unix Checking "aarch64*-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "am3*-*-linux*" against "powerpc64le-unknown-linux-gnu" Checking "amdgcn-*-*" against "powerpc64le-unknown-linux-gnu" Checking "arm*-*-eabi*" against "powerpc64le-unknown-linux-gnu" Checking "arm*-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "arm*-*-symbianelf*" against "powerpc64le-unknown-linux-gnu" Checking "avr-*-*" against "powerpc64le-unknown-linux-gnu" Checking "bfin-*-*" against "powerpc64le-unknown-linux-gnu" Checking "cris-*-*" against "powerpc64le-unknown-linux-gnu" Checking "crisv32-*-*" against "powerpc64le-unknown-linux-gnu" Checking "csky-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "fido-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "h8300-*-*" against "powerpc64le-unknown-linux-gnu" Checking "lm32-*-*" against "powerpc64le-unknown-linux-gnu" Checking "m32c-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "m68k-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "m68k-*-uclinux*" against "powerpc64le-unknown-linux-gnu" Checking "mips*-*-elf*" against "powerpc64le-unknown-linux-gnu" Checking "mmix-*-*" against "powerpc64le-unknown-linux-gnu" Checking "mn10300-*-elf*" against "powerpc64le-unknown-linux-gnu" Checking "moxie-*-elf*" against "powerpc64le-unknown-linux-gnu" Checking "msp430-*-*" against "powerpc64le-unknown-linux-gnu" Checking "nds32*-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "nios2-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "nvptx-*-*" against "powerpc64le-unknown-linux-gnu" Checking "powerpc-*-eabi*" against "powerpc64le-unknown-linux-gnu" Checking "powerpc-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "pru-*-*" against "powerpc64le-unknown-linux-gnu" Checking "rx-*-*" against "powerpc64le-unknown-linux-gnu" Checking "tic6x-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "visium-*-*" against "powerpc64le-unknown-linux-gnu" Checking "xstormy16-*" against "powerpc64le-unknown-linux-gnu" Checking "xtensa*-*-elf" against "powerpc64le-unknown-linux-gnu" Checking "*-*-rtems*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-vxworks*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target profiling_available: returning 1 for unix check_compile tool: g++ for profiling /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/../../../libio/_G_config.h /home/luoxhu/workspace/../../../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/iostream.list /home/luoxhu/workspace/gcc-git/../../../libio/iostream.list /home/luoxhu/workspace/../../../../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/./libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/../libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/../../libio/Makefile.in /home/luoxhu/workspace/gcc-git/../../../libio/Makefile.in /home/luoxhu/workspace/../../../../libio/Makefile.in doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ profiling115858.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -pg -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/ -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs -lm -o profiling115858.exe Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ profiling115858.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -pg -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/ -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs -lm -o profiling115858.exe (timeout = 300) pid is 115910 -115910 waitres is 115910 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Looking for library file ../lib/profopt.exp Looking for library file /usr/share/dejagnu/profopt.exp Looking for library file /usr/share/dejagnu/lib/profopt.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/profopt.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/profopt.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/profopt.exp Looking for library file ../lib/dg.exp Looking for library file /usr/share/dejagnu/dg.exp Loading /usr/share/dejagnu/dg.exp Looking for library file ../lib/gcc-dg.exp Looking for library file /usr/share/dejagnu/gcc-dg.exp Looking for library file /usr/share/dejagnu/lib/gcc-dg.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/gcc-dg.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/gcc-dg.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/gcc-dg.exp Looking for library file ../lib/file-format.exp Looking for library file /usr/share/dejagnu/file-format.exp Looking for library file /usr/share/dejagnu/lib/file-format.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/file-format.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/file-format.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/file-format.exp Looking for library file ../lib/target-supports-dg.exp Looking for library file /usr/share/dejagnu/target-supports-dg.exp Looking for library file /usr/share/dejagnu/lib/target-supports-dg.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/target-supports-dg.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-supports-dg.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-supports-dg.exp Looking for library file ../lib/scanasm.exp Looking for library file /usr/share/dejagnu/scanasm.exp Looking for library file /usr/share/dejagnu/lib/scanasm.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/scanasm.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanasm.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanasm.exp Looking for library file ../lib/scanrtl.exp Looking for library file /usr/share/dejagnu/scanrtl.exp Looking for library file /usr/share/dejagnu/lib/scanrtl.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/scanrtl.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanrtl.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanrtl.exp Looking for library file ../lib/scandump.exp Looking for library file /usr/share/dejagnu/scandump.exp Looking for library file /usr/share/dejagnu/lib/scandump.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/scandump.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scandump.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scandump.exp Looking for library file ../lib/scantree.exp Looking for library file /usr/share/dejagnu/scantree.exp Looking for library file /usr/share/dejagnu/lib/scantree.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/scantree.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scantree.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scantree.exp Looking for library file ../lib/scanltranstree.exp Looking for library file /usr/share/dejagnu/scanltranstree.exp Looking for library file /usr/share/dejagnu/lib/scanltranstree.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/scanltranstree.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanltranstree.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanltranstree.exp Looking for library file ../lib/scanipa.exp Looking for library file /usr/share/dejagnu/scanipa.exp Looking for library file /usr/share/dejagnu/lib/scanipa.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/scanipa.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanipa.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanipa.exp Looking for library file ../lib/scanwpaipa.exp Looking for library file /usr/share/dejagnu/scanwpaipa.exp Looking for library file /usr/share/dejagnu/lib/scanwpaipa.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/scanwpaipa.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanwpaipa.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanwpaipa.exp Looking for library file ../lib/scanlang.exp Looking for library file /usr/share/dejagnu/scanlang.exp Looking for library file /usr/share/dejagnu/lib/scanlang.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/scanlang.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanlang.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/scanlang.exp Looking for library file ../lib/timeout-dg.exp Looking for library file /usr/share/dejagnu/timeout-dg.exp Looking for library file /usr/share/dejagnu/lib/timeout-dg.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/timeout-dg.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/timeout-dg.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/timeout-dg.exp Looking for library file ../lib/torture-options.exp Looking for library file /usr/share/dejagnu/torture-options.exp Looking for library file /usr/share/dejagnu/lib/torture-options.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/torture-options.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/torture-options.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/torture-options.exp Looking for library file ../lib/fortran-modules.exp Looking for library file /usr/share/dejagnu/fortran-modules.exp Looking for library file /usr/share/dejagnu/lib/fortran-modules.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/fortran-modules.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/fortran-modules.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/fortran-modules.exp Checking pattern "*-*-cygwin*" with powerpc64le-unknown-linux-gnu /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/./xgcc /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/../xgcc Checking "nvptx-*-*" against "powerpc64le-unknown-linux-gnu" Checking "amdgcn-*-*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target lto: checking unix check_compile tool: g++ for lto /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/../../../libio/_G_config.h /home/luoxhu/workspace/../../../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/iostream.list /home/luoxhu/workspace/gcc-git/../../../libio/iostream.list /home/luoxhu/workspace/../../../../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/./libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/../libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/../../libio/Makefile.in /home/luoxhu/workspace/gcc-git/../../../libio/Makefile.in /home/luoxhu/workspace/../../../../libio/Makefile.in doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -flto -c -o lto115858.o lto115858.c Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -flto -c -o lto115858.o lto115858.c (timeout = 300) pid is 115920 -115920 waitres is 115920 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu check_cached_effective_target lto: returning 1 for unix check_compile tool: g++ for linker_plugin /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/../../../libio/_G_config.h /home/luoxhu/workspace/../../../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/iostream.list /home/luoxhu/workspace/gcc-git/../../../libio/iostream.list /home/luoxhu/workspace/../../../../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/./libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/../libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/../../libio/Makefile.in /home/luoxhu/workspace/gcc-git/../../../libio/Makefile.in /home/luoxhu/workspace/../../../../libio/Makefile.in doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ linker_plugin115858.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -flto -fuse-linker-plugin -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/ -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs -lm -o linker_plugin115858.exe Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ linker_plugin115858.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -flto -fuse-linker-plugin -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/ -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs -lm -o linker_plugin115858.exe (timeout = 300) pid is 115927 -115927 waitres is 115927 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu check_cached_effective_target llvm_binutils: checking unix Checking "amdgcn*-*-*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target offload_gcn: checking unix check_compile tool: g++ for offload_gcn /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/../../../libio/_G_config.h /home/luoxhu/workspace/../../../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/iostream.list /home/luoxhu/workspace/gcc-git/../../../libio/iostream.list /home/luoxhu/workspace/../../../../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/./libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/../libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/../../libio/Makefile.in /home/luoxhu/workspace/gcc-git/../../../libio/Makefile.in /home/luoxhu/workspace/../../../../libio/Makefile.in doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ offload_gcn115858.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -foffload=amdgcn-unknown-amdhsa -S -o offload_gcn115858.s Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ offload_gcn115858.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -foffload=amdgcn-unknown-amdhsa -S -o offload_gcn115858.s (timeout = 300) pid is 115945 -115945 waitres is 115945 exp6 0 1 close result is 115945 exp6 0 1 output is xg++: fatal error: GCC is not configured to support amdgcn-unknown-amdhsa as offload target compilation terminated. status 1 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu compiler exited with status 1 output is: xg++: fatal error: GCC is not configured to support amdgcn-unknown-amdhsa as offload target compilation terminated. check_cached_effective_target offload_gcn: returning 0 for unix check_cached_effective_target llvm_binutils: returning 0 for unix Testing g++.dg/tree-prof/crossmodule-indir-call-topn-3.C, Checking "nvptx-*-*" against "powerpc64le-unknown-linux-gnu" Checking "amdgcn-*-*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target lto: returning 1 for unix is-effective-target: lto 1 Profiling argument is <-fprofile-generate> Checking "powerpc-ibm-aix*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target tls_runtime: returning 1 for unix Checking "*-*-solaris2*" against "powerpc64le-unknown-linux-gnu" Checking "mips*-*-*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-mingw*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-cygwin*" against "powerpc64le-unknown-linux-gnu" check_cached_effective_target uclibc: returning 0 for unix check_cached_effective_target profiling_available: returning 1 for unix check_compile tool: g++ for profiling /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/../../../libio/_G_config.h /home/luoxhu/workspace/../../../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/iostream.list /home/luoxhu/workspace/gcc-git/../../../libio/iostream.list /home/luoxhu/workspace/../../../../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/./libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/../libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/../../libio/Makefile.in /home/luoxhu/workspace/gcc-git/../../../libio/Makefile.in /home/luoxhu/workspace/../../../../libio/Makefile.in doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ profiling115858.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -pg -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/ -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs -lm -o profiling115858.exe Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ profiling115858.c -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -pg -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/ -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs -lm -o profiling115858.exe (timeout = 300) pid is 115948 -115948 waitres is 115948 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking "powerpc-ibm-aix*" against "powerpc64le-unknown-linux-gnu" /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/../../../libio/_G_config.h /home/luoxhu/workspace/../../../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/iostream.list /home/luoxhu/workspace/gcc-git/../../../libio/iostream.list /home/luoxhu/workspace/../../../../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/./libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/../libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/../../libio/Makefile.in /home/luoxhu/workspace/gcc-git/../../../libio/Makefile.in /home/luoxhu/workspace/../../../../libio/Makefile.in doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/tree-prof/crossmodule-indir-call-topn-3.C -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -O2 -DDOJOB=1 -fdump-ipa-profile_estimate -fno-early-inlining -fdump-ipa-all-details -fprofile-generate -D_PROFILE_GENERATE -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/ -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/crossmodule-indir-call-topn-3.x01 Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/tree-prof/crossmodule-indir-call-topn-3.C -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -O2 -DDOJOB=1 -fdump-ipa-profile_estimate -fno-early-inlining -fdump-ipa-all-details -fprofile-generate -D_PROFILE_GENERATE -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/ -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/crossmodule-indir-call-topn-3.x01 (timeout = 300) pid is 115958 -115958 waitres is 115958 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking powerpc64le-unknown-linux-gnu against powerpc64le-unknown-linux-gnu loading to unix Setting LD_LIBRARY_PATH to .:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../..:.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../..:/home/luoxhu/local/lib/ spawning command /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/crossmodule-indir-call-topn-3.x01 exp9 file6 Executed /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/crossmodule-indir-call-topn-3.x01, status 0 done:0 /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/../../../libio/_G_config.h /home/luoxhu/workspace/../../../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/iostream.list /home/luoxhu/workspace/gcc-git/../../../libio/iostream.list /home/luoxhu/workspace/../../../../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/./libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/../libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/../../libio/Makefile.in /home/luoxhu/workspace/gcc-git/../../../libio/Makefile.in /home/luoxhu/workspace/../../../../libio/Makefile.in doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/tree-prof/crossmodule-indir-call-topn-3.C -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -O2 -DDOJOB=1 -fdump-ipa-profile_estimate -fno-early-inlining -fdump-ipa-all-details -fprofile-use -D_PROFILE_USE -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/ -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/crossmodule-indir-call-topn-3.x02 Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/tree-prof/crossmodule-indir-call-topn-3.C -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -O2 -DDOJOB=1 -fdump-ipa-profile_estimate -fno-early-inlining -fdump-ipa-all-details -fprofile-use -D_PROFILE_USE -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/ -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/crossmodule-indir-call-topn-3.x02 (timeout = 300) pid is 115971 -115971 waitres is 115971 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking powerpc64le-unknown-linux-gnu against powerpc64le-unknown-linux-gnu loading to unix Setting LD_LIBRARY_PATH to .:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../..:.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../..:/home/luoxhu/local/lib/ spawning command /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/crossmodule-indir-call-topn-3.x02 exp9 file6 Executed /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/crossmodule-indir-call-topn-3.x02, status 0 done:0 g++.dg/tree-prof/crossmodule-indir-call-topn-3.C: dump file does not exist dump file: crossmodule-indir-call-topn-3.x02.wpa.profile_estimate remove-build-file `crossmodule-indir-call-topn-3.C.[0-9][0-9][0-9]{l,i,r,t}.*' remove-build-file `crossmodule-indir-call-topn-3.C.016i.visibility crossmodule-indir-call-topn-3.C.077i.pure-const crossmodule-indir-call-topn-3.C.063i.free-fnsummary1 crossmodule-indir-call-topn-3.C.076i.inline crossmodule-indir-call-topn-3.C.064i.increase_alignment crossmodule-indir-call-topn-3.C.081i.comdats crossmodule-indir-call-topn-3.C.017i.build_ssa_passes crossmodule-indir-call-topn-3.C.067i.whole-program crossmodule-indir-call-topn-3.C.000i.ipa-clones crossmodule-indir-call-topn-3.C.047i.remove_symbols crossmodule-indir-call-topn-3.C.022i.opt_local_passes crossmodule-indir-call-topn-3.C.072i.sra crossmodule-indir-call-topn-3.C.059i.targetclone crossmodule-indir-call-topn-3.C.080i.single-use crossmodule-indir-call-topn-3.C.075i.fnsummary crossmodule-indir-call-topn-3.C.071i.cp crossmodule-indir-call-topn-3.C.078i.free-fnsummary2 crossmodule-indir-call-topn-3.C.069i.icf crossmodule-indir-call-topn-3.C.068i.profile_estimate crossmodule-indir-call-topn-3.C.079i.static-var crossmodule-indir-call-topn-3.C.082i.materialize-all-clones crossmodule-indir-call-topn-3.C.061i.profile crossmodule-indir-call-topn-3.C.000i.cgraph crossmodule-indir-call-topn-3.C.000i.type-inheritance crossmodule-indir-call-topn-3.C.070i.devirt' Testing g++.dg/tree-prof/crossmodule-indir-call-topn-3a.C, Checking "powerpc-ibm-aix*" against "powerpc64le-unknown-linux-gnu" /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/../../../libio/_G_config.h /home/luoxhu/workspace/../../../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/iostream.list /home/luoxhu/workspace/gcc-git/../../../libio/iostream.list /home/luoxhu/workspace/../../../../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/./libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/../libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/../../libio/Makefile.in /home/luoxhu/workspace/gcc-git/../../../libio/Makefile.in /home/luoxhu/workspace/../../../../libio/Makefile.in doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/tree-prof/crossmodule-indir-call-topn-3a.C -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -fprofile-generate -D_PROFILE_GENERATE -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/ -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/crossmodule-indir-call-topn-3a.x01 Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/tree-prof/crossmodule-indir-call-topn-3a.C -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -fprofile-generate -D_PROFILE_GENERATE -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/ -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/crossmodule-indir-call-topn-3a.x01 (timeout = 300) pid is 115994 -115994 waitres is 115994 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking powerpc64le-unknown-linux-gnu against powerpc64le-unknown-linux-gnu loading to unix Setting LD_LIBRARY_PATH to .:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../..:.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../..:/home/luoxhu/local/lib/ spawning command /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/crossmodule-indir-call-topn-3a.x01 exp9 file6 Executed /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/crossmodule-indir-call-topn-3a.x01, status 0 /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/../../../libio/_G_config.h /home/luoxhu/workspace/../../../../libio/_G_config.h /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk_build/../../libio/iostream.list /home/luoxhu/workspace/gcc-git/../../../libio/iostream.list /home/luoxhu/workspace/../../../../libio/iostream.list /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/./libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/../libio/Makefile.in /home/luoxhu/workspace/gcc-git/gcc-trunk/../../libio/Makefile.in /home/luoxhu/workspace/gcc-git/../../../libio/Makefile.in /home/luoxhu/workspace/../../../../libio/Makefile.in doing compile Invoking the compiler as /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/tree-prof/crossmodule-indir-call-topn-3a.C -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -fprofile-use -D_PROFILE_USE -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/ -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/crossmodule-indir-call-topn-3a.x02 Setting timeout to 300 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/tree-prof/crossmodule-indir-call-topn-3a.C -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never -nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util -fmessage-length=0 -fprofile-use -D_PROFILE_USE -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/ -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs -lm -o /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/crossmodule-indir-call-topn-3a.x02 (timeout = 300) pid is 116054 -116054 waitres is 116054 exp6 0 0 output is status 0 Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking pattern "sparc-*-sunos*" with powerpc64le-unknown-linux-gnu Checking pattern "alpha*-*-*" with powerpc64le-unknown-linux-gnu Checking pattern "hppa*-*-hpux*" with powerpc64le-unknown-linux-gnu Checking powerpc64le-unknown-linux-gnu against powerpc64le-unknown-linux-gnu loading to unix Setting LD_LIBRARY_PATH to .:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../..:.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../..:/home/luoxhu/local/lib/ spawning command /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/crossmodule-indir-call-topn-3a.x02 exp9 file6 Executed /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/crossmodule-indir-call-topn-3a.x02, status 0 Profiling argument is <-fauto-profile> Checking "i?86-*-linux*" against "powerpc64le-unknown-linux-gnu" Checking "x86_64-*-linux*" against "powerpc64le-unknown-linux-gnu" autofdo only supported on linux Profiling argument is <-fauto-profile> Checking "i?86-*-linux*" against "powerpc64le-unknown-linux-gnu" Checking "x86_64-*-linux*" against "powerpc64le-unknown-linux-gnu" autofdo only supported on linux searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/tsan/tsan.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/ubsan/ubsan.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.dg/vect/vect.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.old-deja/old-deja.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.target/aarch64/aarch64.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.target/aarch64/sve/aarch64-sve.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.target/arm/arm.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.target/i386/i386.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.target/powerpc/powerpc.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/g++.target/riscv/riscv.exp in tree-prof.exp === g++ Summary === # of expected passes 8 # of unresolved testcases 1 # of unsupported tests 2 Checking pattern "*-*-cygwin*" with powerpc64le-unknown-linux-gnu Checking pattern "*-dos-*" with powerpc64le-unknown-linux-gnu /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/./xgcc /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/../xgcc compiler is /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc /home/luoxhu/workspace/gcc-git/gcc-trunk_build/./powerpc64le-unknown-linux-gnu GCC path is . /home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/././libstdc++-v3 Checking "*-*-darwin*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-cygwin*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-mingw*" against "powerpc64le-unknown-linux-gnu" Checking "hppa*-*-hpux*" against "powerpc64le-unknown-linux-gnu" shared lib extension: so Checking "*-*-darwin*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-cygwin*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-mingw*" against "powerpc64le-unknown-linux-gnu" Checking "hppa*-*-hpux*" against "powerpc64le-unknown-linux-gnu" Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ -print-file-name=libgcc_s.so (timeout = 300) pid is 116117 -116117 waitres is 116117 exp6 0 0 output is /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../libgcc_s.so status 0 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ -print-multi-directory (timeout = 300) pid is 116120 -116120 waitres is 116120 exp6 0 0 output is . status 0 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../ -print-multi-lib (timeout = 300) pid is 116123 -116123 waitres is 116123 exp6 0 0 output is .; status 0 Checking "*-*-cygwin*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-mingw*" against "powerpc64le-unknown-linux-gnu" LD_LIBRARY_PATH=.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../..:/home/luoxhu/local/lib/ LD_RUN_PATH=.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../.. SHLIB_PATH=.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../.. LD_LIBRARY_PATH_32=.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../..:/home/luoxhu/local/lib/ LD_LIBRARY_PATH_64=.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../..:/home/luoxhu/local/lib/ DYLD_LIBRARY_PATH=.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../.. Checking "*-*-darwin*" against "powerpc64le-unknown-linux-gnu" ALWAYS_CXXFLAGS set to {additional_flags=-fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never } {additional_flags=-nostdinc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/libsupc++ -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/include/backward -I/home/luoxhu/workspace/gcc-git/gcc-trunk/libstdc++-v3/testsuite/util} {ldflags= -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libstdc++-v3/src/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/ -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libitm/.libs} additional_flags=-fmessage-length=0 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ -v (timeout = 300) pid is 116126 -116126 waitres is 116126 exp6 0 0 output is Using built-in specs. COLLECT_GCC=/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ COLLECT_LTO_WRAPPER=/home/luoxhu/local/gcc_10/libexec/gcc/powerpc64le-unknown-linux-gnu/10.0.0/lto-wrapper Target: powerpc64le-unknown-linux-gnu Configured with: ../gcc-trunk/configure --enable-languages=c,c++,fortran --prefix=/home/luoxhu/local/gcc_10/ --disable-libsanitizer --disable-bootstrap : (reconfigured) ../gcc-trunk/configure --prefix=/home/luoxhu/local/gcc_10/ --disable-libsanitizer --disable-bootstrap --enable-languages=c,c++,fortran,lto --no-create --no-recursion Thread model: posix Supported LTO compression algorithms: zlib gcc version 10.0.0 20200114 (experimental) (GCC) status 0 /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/g++/../../xg++ version 10.0.0 20200114 (experimental) (GCC) runtest completed at Tue Jan 14 08:22:48 2020 make[2]: Leaving directory '/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc' rm -rf testsuite/gfortran-parallel make[2]: Entering directory '/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc' (rootme=`${PWDCMD-pwd}`; export rootme; \ srcdir=`cd ../../gcc-trunk/gcc; ${PWDCMD-pwd}` ; export srcdir ; \ if [ -n "" ] \ && [ -n "$GCC_RUNTEST_PARALLELIZE_DIR" ] \ && [ -f testsuite/gfortran-parallel/finished ]; then \ rm -rf testsuite/gfortran; \ else \ cd testsuite/gfortran; \ rm -f tmp-site.exp; \ sed '/set tmpdir/ s|testsuite$|testsuite/gfortran|' \ < ../../site.exp > tmp-site.exp; \ /bin/sh ${srcdir}/../move-if-change tmp-site.exp site.exp; \ EXPECT=`if [ -f ${rootme}/../expect/expect ] ; then echo ${rootme}/../expect/expect ; else echo expect ; fi` ; export EXPECT ; \ if [ -f ${rootme}/../expect/expect ] ; then \ TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWDCMD-pwd}` ; \ export TCL_LIBRARY ; \ fi ; \ `if [ -f ${srcdir}/../dejagnu/runtest ] ; then echo ${srcdir}/../dejagnu/runtest ; else echo runtest; fi` --tool gfortran tree-prof.exp=crossmodule-* -v -v; \ if [ -n "$GCC_RUNTEST_PARALLELIZE_DIR" ] ; then \ touch ${rootme}/testsuite/gfortran-parallel/finished; \ fi ; \ fi ) Expect binary is expect Looking for /usr/share/dejagnu/runtest.exp. Using /usr/share/dejagnu/runtest.exp as main test driver Verbose level is 2 Login name is luoxhu Looking for ~/.dejagnurc Looking for /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/site.exp Found /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/site.exp Using test sources in /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite Using test binaries in /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran Tool root directory is /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite Using /usr/share/dejagnu to find libraries Looking for /usr/share/dejagnu/site.exp Found /usr/share/dejagnu/site.exp Looking for library file ../lib/utils.exp Looking for library file /usr/share/dejagnu/utils.exp Loading /usr/share/dejagnu/utils.exp Looking for library file ../lib/framework.exp Looking for library file /usr/share/dejagnu/framework.exp Loading /usr/share/dejagnu/framework.exp Looking for library file ../lib/debugger.exp Looking for library file /usr/share/dejagnu/debugger.exp Loading /usr/share/dejagnu/debugger.exp Looking for library file ../lib/remote.exp Looking for library file /usr/share/dejagnu/remote.exp Loading /usr/share/dejagnu/remote.exp Looking for library file ../lib/telnet.exp Looking for library file /usr/share/dejagnu/telnet.exp Loading /usr/share/dejagnu/telnet.exp Looking for library file ../lib/rlogin.exp Looking for library file /usr/share/dejagnu/rlogin.exp Loading /usr/share/dejagnu/rlogin.exp Looking for library file ../lib/kermit.exp Looking for library file /usr/share/dejagnu/kermit.exp Loading /usr/share/dejagnu/kermit.exp Looking for library file ../lib/tip.exp Looking for library file /usr/share/dejagnu/tip.exp Loading /usr/share/dejagnu/tip.exp Looking for library file ../lib/rsh.exp Looking for library file /usr/share/dejagnu/rsh.exp Loading /usr/share/dejagnu/rsh.exp Looking for library file ../lib/ftp.exp Looking for library file /usr/share/dejagnu/ftp.exp Loading /usr/share/dejagnu/ftp.exp Looking for library file ../lib/target.exp Looking for library file /usr/share/dejagnu/target.exp Loading /usr/share/dejagnu/target.exp Looking for library file ../lib/targetdb.exp Looking for library file /usr/share/dejagnu/targetdb.exp Loading /usr/share/dejagnu/targetdb.exp Looking for library file ../lib/libgloss.exp Looking for library file /usr/share/dejagnu/libgloss.exp Loading /usr/share/dejagnu/libgloss.exp Loading library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/gfortran.exp Looking for library file ../lib/prune.exp Looking for library file /usr/share/dejagnu/prune.exp Looking for library file /usr/share/dejagnu/lib/prune.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/prune.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/prune.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/prune.exp Looking for library file ../lib/multiline.exp Looking for library file /usr/share/dejagnu/multiline.exp Looking for library file /usr/share/dejagnu/lib/multiline.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/multiline.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/multiline.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/multiline.exp Looking for library file ../lib/gcc-defs.exp Looking for library file /usr/share/dejagnu/gcc-defs.exp Looking for library file /usr/share/dejagnu/lib/gcc-defs.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/gcc-defs.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/gcc-defs.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/gcc-defs.exp Looking for library file ../lib/target-libpath.exp Looking for library file /usr/share/dejagnu/target-libpath.exp Looking for library file /usr/share/dejagnu/lib/target-libpath.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/target-libpath.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-libpath.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-libpath.exp Looking for library file ../lib/wrapper.exp Looking for library file /usr/share/dejagnu/wrapper.exp Looking for library file /usr/share/dejagnu/lib/wrapper.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/wrapper.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/wrapper.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/wrapper.exp Looking for library file ../lib/target-utils.exp Looking for library file /usr/share/dejagnu/target-utils.exp Looking for library file /usr/share/dejagnu/lib/target-utils.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/target-utils.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-utils.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-utils.exp Looking for library file ../lib/target-supports.exp Looking for library file /usr/share/dejagnu/target-supports.exp Looking for library file /usr/share/dejagnu/lib/target-supports.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/target-supports.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-supports.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/target-supports.exp Looking for library file ../lib/timeout.exp Looking for library file /usr/share/dejagnu/timeout.exp Looking for library file /usr/share/dejagnu/lib/timeout.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/dejagnu/lib/timeout.exp Looking for library file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/timeout.exp Loading /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/lib/timeout.exp Testing gfortran Running only tests tree-prof.exp=crossmodule-* Opening log files in . Test Run By luoxhu on Tue Jan 14 08:22:49 2020 Checking powerpc64le-unknown-linux-gnu against powerpc64le-unknown-linux-gnu Native configuration is powerpc64le-unknown-linux-gnu === gfortran tests === setting trap for SIGTERM to terminated setting trap for SIGINT to interrupted by user setting trap for SIGQUIT to interrupted by user dirlist is /usr/share/dejagnu/baseboards Looking for standard board description file for build /usr/share/dejagnu/baseboards/standard.exp Looking for board description file for build /usr/share/dejagnu/baseboards/genoa.exp pushing config for build, name is genoa dirlist is /usr/share/dejagnu/baseboards Looking for standard board description file for host /usr/share/dejagnu/baseboards/standard.exp Looking for board description file for host /usr/share/dejagnu/baseboards/genoa.exp pushing config for host, name is genoa Schedule of variations: unix target is unix Running target unix Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/config/base-config.exp Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/../config/base-config.exp Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/../../config/base-config.exp Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/../../../config/base-config.exp dirlist is /usr/share/dejagnu/baseboards/genoa /usr/share/dejagnu/baseboards Looking for standard board description file for target /usr/share/dejagnu/baseboards/genoa/standard.exp Looking for standard board description file for target /usr/share/dejagnu/baseboards/standard.exp Looking for board description file for target /usr/share/dejagnu/baseboards/genoa/unix.exp Looking for board description file for target /usr/share/dejagnu/baseboards/unix.exp Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target. Looking for generic interface file for target /usr/share/dejagnu/config/unix.exp Using /usr/share/dejagnu/config/unix.exp as generic interface file for target. /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/./xgcc /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/../xgcc Checking "*-*-cygwin*" against "powerpc64le-unknown-linux-gnu" Checking "alpha*-*" against "powerpc64le-unknown-linux-gnu" Checking "sparc64-*-linux-gnu" against "powerpc64le-unknown-linux-gnu" Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/config/unix.exp Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/config/gnu.exp Looking for tool-and-target-specific interface file /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/config/default.exp Using /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/config/default.exp as tool-and-target-specific interface file. Looking for library file ../lib/standard.exp Looking for library file /usr/share/dejagnu/standard.exp Loading /usr/share/dejagnu/standard.exp pushing config for target, name is unix Top level testsuite dirs are /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gfortran.dg /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gfortran.fortran-torture trying to glob /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gfortran.dg/coarray/caf.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gfortran.dg/debug/debug.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gfortran.dg/dg.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gfortran.dg/goacc/goacc.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gfortran.dg/gomp/gomp.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gfortran.dg/graphite/graphite.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gfortran.dg/guality/guality.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gfortran.dg/ieee/ieee.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gfortran.dg/lto/lto.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gfortran.dg/prof/prof.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gfortran.dg/vect/vect.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gfortran.fortran-torture/compile/compile.exp in tree-prof.exp searching for /home/luoxhu/workspace/gcc-git/gcc-trunk/gcc/testsuite/gfortran.fortran-torture/execute/execute.exp in tree-prof.exp === gfortran Summary === Checking pattern "*-*-cygwin*" with powerpc64le-unknown-linux-gnu /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/./xgcc /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/../xgcc compiler is /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/xgcc /home/luoxhu/workspace/gcc-git/gcc-trunk_build/./powerpc64le-unknown-linux-gnu GCC path is . Seeing if /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/gfortran exists. Didn't find file /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/gfortran, returning gfortran Seeing if /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/../../gfortran exists. Found file, returning /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/../../gfortran -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/../../ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libgfortran/ Checking "*-*-darwin*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-cygwin*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-mingw*" against "powerpc64le-unknown-linux-gnu" Checking "hppa*-*-hpux*" against "powerpc64le-unknown-linux-gnu" shared lib extension: so Checking "*-*-darwin*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-cygwin*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-mingw*" against "powerpc64le-unknown-linux-gnu" Checking "hppa*-*-hpux*" against "powerpc64le-unknown-linux-gnu" Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/../../gfortran -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/../../ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libgfortran/ -print-file-name=libgcc_s.so (timeout = 300) pid is 116254 -116254 waitres is 116254 exp6 0 0 output is /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/../../libgcc_s.so status 0 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/../../gfortran -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/../../ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libgfortran/ -print-multi-directory (timeout = 300) pid is 116258 -116258 waitres is 116258 exp6 0 0 output is . status 0 Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/../../gfortran -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/../../ -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libgfortran/ -print-multi-lib (timeout = 300) pid is 116261 -116261 waitres is 116261 exp6 0 0 output is .; status 0 Checking "*-*-cygwin*" against "powerpc64le-unknown-linux-gnu" Checking "*-*-mingw*" against "powerpc64le-unknown-linux-gnu" LD_LIBRARY_PATH=.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libgfortran/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libgfortran/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libatomic/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libquadmath/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libquadmath/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/../..:/home/luoxhu/local/lib/ LD_RUN_PATH=.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libgfortran/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libgfortran/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libatomic/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libquadmath/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libquadmath/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/../.. SHLIB_PATH=.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libgfortran/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libgfortran/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libatomic/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libquadmath/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libquadmath/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/../.. LD_LIBRARY_PATH_32=.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libgfortran/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libgfortran/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libatomic/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libquadmath/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libquadmath/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/../..:/home/luoxhu/local/lib/ LD_LIBRARY_PATH_64=.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libgfortran/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libgfortran/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libatomic/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libquadmath/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libquadmath/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/../..:/home/luoxhu/local/lib/ DYLD_LIBRARY_PATH=.:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libgfortran/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libgfortran/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libatomic/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libquadmath/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libquadmath/.libs:/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/../.. ALWAYS_GFORTRANFLAGS set to {additional_flags=-fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never } {ldflags=-B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libgfortran/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libgfortran/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libgfortran/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libatomic/.libs -B/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libquadmath/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libquadmath/.libs -L/home/luoxhu/workspace/gcc-git/gcc-trunk_build/powerpc64le-unknown-linux-gnu/./libquadmath/.libs } Executing on host: /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/../../gfortran -v (timeout = 300) pid is 116264 -116264 waitres is 116264 exp6 0 0 output is Using built-in specs. COLLECT_GCC=/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/../../gfortran COLLECT_LTO_WRAPPER=/home/luoxhu/local/gcc_10/libexec/gcc/powerpc64le-unknown-linux-gnu/10.0.0/lto-wrapper Target: powerpc64le-unknown-linux-gnu Configured with: ../gcc-trunk/configure --enable-languages=c,c++,fortran --prefix=/home/luoxhu/local/gcc_10/ --disable-libsanitizer --disable-bootstrap : (reconfigured) ../gcc-trunk/configure --prefix=/home/luoxhu/local/gcc_10/ --disable-libsanitizer --disable-bootstrap --enable-languages=c,c++,fortran,lto --no-create --no-recursion Thread model: posix Supported LTO compression algorithms: zlib gcc version 10.0.0 20200114 (experimental) (GCC) status 0 /home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc/testsuite/gfortran/../../gfortran version 10.0.0 20200114 (experimental) (GCC) runtest completed at Tue Jan 14 08:22:49 2020 make[2]: Leaving directory '/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc' make[1]: Leaving directory '/home/luoxhu/workspace/gcc-git/gcc-trunk_build/gcc'
On Mon, 2020-01-13 at 11:23 +0800, luoxhu wrote: > On 2020/1/10 19:08, Jan Hubicka wrote: > > OK. You will need to do the obvious updates for Martin's patch > > which turned some member functions into static functions. > > > > Honza > > Thanks a lot! Rebased & updated, will commit below patch shortly > when git push is ready. > > > v8: > 1. Rebase to master with Martin's static function (r280043) comments > merge. > Boostrap/testsuite/SPEC2017 tested pass on Power8-LE. > 2. TODO: > 2.1. C++ devirt for multiple speculative call targets. > 2.2. ipa-icf ipa_merge_profiles refine with COMDAT inline > testcase. [...] > diff --git a/gcc/ipa-profile.c b/gcc/ipa-profile.c [...] > +static ipa_profile_call_summaries *call_sums = NULL; [...] > static void > ipa_profile_generate_summary (void) > @@ -169,7 +261,10 @@ ipa_profile_generate_summary (void) > basic_block bb; > > hash_table<histogram_hash> hashtable (10); > - > + > + gcc_checking_assert (!call_sums); > + call_sums = new ipa_profile_call_summaries (symtab); > + [...] Unfortunately, this assertion is failing for most of the testcases in jit.dg, reducing the number of PASS results in jit.sum from 10473 down to 3254 in my builds. Counter-intuitively, "jit" is not in --enable-languages=all (as it also needs --enable-host-shared at configure time, which slows down the built compiler code). The jit code expects to be able to invoke the compiler code more than once within the same process, purging all state. It looks like this "call_sums" state needs deleting and resetting to NULL after the compiler has run (or else we'll likely get an ICE due to using old symtab/call summaries in subsequent in-process runs of the compiler). Is there a natural place to do that within the IPA hooks? Alternatively the following patch seems to fix things (not yet fully tested though); hopefully it seems sane. gcc/ChangeLog: * ipa-profile.c (ipa_profile_c_finalize): New function. * toplev.c (toplev::finalize): Call it. * toplev.h (ipa_profile_c_finalize): New decl. --- gcc/ipa-profile.c | 10 ++++++++++ gcc/toplev.c | 1 + gcc/toplev.h | 2 ++ 3 files changed, 13 insertions(+) diff --git a/gcc/ipa-profile.c b/gcc/ipa-profile.c index fc231c916b7..699419ead19 100644 --- a/gcc/ipa-profile.c +++ b/gcc/ipa-profile.c @@ -1069,3 +1069,13 @@ make_pass_ipa_profile (gcc::context *ctxt) { return new pass_ipa_profile (ctxt); } + +/* Reset all state within ipa-profile.c so that we can rerun the compiler + within the same process. For use by toplev::finalize. */ + +void +ipa_profile_c_finalize () +{ + delete call_sums; + call_sums = NULL; +} diff --git a/gcc/toplev.c b/gcc/toplev.c index 4c8be502c71..ca0515583c7 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -2453,6 +2453,7 @@ toplev::finalize (void) this_target_rtl->target_specific_initialized = false; /* Needs to be called before cgraph_c_finalize since it uses symtab. */ + ipa_profile_c_finalize (); ipa_reference_c_finalize (); ipa_fnsummary_c_finalize (); diff --git a/gcc/toplev.h b/gcc/toplev.h index d6c316962b0..10611691608 100644 --- a/gcc/toplev.h +++ b/gcc/toplev.h @@ -103,4 +103,6 @@ extern void parse_alignment_opts (void); extern void initialize_rtl (void); +extern void ipa_profile_c_finalize (void); + #endif /* ! GCC_TOPLEV_H */
Hi, On Tue, 14 Jan 2020 at 15:35, luoxhu <luoxhu@linux.ibm.com> wrote: > > Hi, > > On 2020/1/14 21:03, Martin Liška wrote: > > On 1/13/20 4:23 AM, luoxhu wrote: > >> Thanks a lot! Rebased & updated, will commit below patch shortly when > >> git push is ready. > > > > Hello. > > > > I'm pretty sure the patch contains failure of the following tests: > > > > FAIL: gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c > > scan-pgo-wpa-ipa-dump profile_estimate "2 \\(200.00%\\) speculations > > produced." > > FAIL: gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c > > scan-pgo-wpa-ipa-dump profile_estimate "2 \\(200.00%\\) speculations > > produced." > > FAIL: gcc.dg/tree-prof/crossmodule-indircall-1.c execution, > > -fprofile-use -D_PROFILE_USE > > > > Can you please take a look? > > Thanks for reporting. > This seems fails only on some platforms. I tested it before commit and > just verified it again on my Power8-LE with gcc.sum andd log attached. > I suppose you are trying on x86 platforms and sorry that I don't have one > at hand, these failures should be easy to fix, If not, I will investigate > it after returning from Chinese New Year vacation. > It fails on arm and aarch64 too. > make check-gcc RUNTESTFLAGS="tree-prof.exp=crossmodule-* -v -v" > log > > > Thanks, > > Martin
Hi. I know the root cause of the failure and will send a patch soon to the mailing list. Martin
On 1/15/20 11:49 AM, Martin Liška wrote: > Hi. > > I know the root cause of the failure and will send a patch soon > to the mailing list. > > Martin There's an obvious patch that I'm going to install. Note that order of function call evaluation in a function call is undefined. It's a similar issue we had some time ago in IPA VRP streaming. Patch can bootstrap on x86_64-linux-gnu and survives regression tests. Thanks, Martin
> gcc/ChangeLog: > > 2020-01-15 Martin Liska <mliska@suse.cz> > > * ipa-profile.c (ipa_profile_read_edge_summary): Do not allow > 2 calls of streamer_read_hwi in a function call. Good catch, Martin! > --- > gcc/ipa-profile.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/gcc/ipa-profile.c b/gcc/ipa-profile.c > index fc231c916b7..03272f20987 100644 > --- a/gcc/ipa-profile.c > +++ b/gcc/ipa-profile.c > @@ -451,8 +451,9 @@ ipa_profile_read_edge_summary (class lto_input_block *ib, cgraph_edge *edge) > > for (i = 0; i < len; i++) > { > - speculative_call_target item (streamer_read_hwi (ib), > - streamer_read_hwi (ib)); > + unsigned int target_id = streamer_read_hwi (ib); > + int target_probability = streamer_read_hwi (ib); > + speculative_call_target item (target_id, target_probability); David, this may be interesting case for analyzer/warning. This surfaced in LTO stremaing for second time quite recently and leads to hard to find bugs. While day before yesterday in pub I argued that warning for nested function calls is not a good way since it would warn too often, perhaps we want to have some way to annotate streamer functions to make it clear that we do not want them to appear inside function call parameters where evaluation order is undefined. Honza > csum->speculative_call_targets.safe_push (item); > } > } > -- > 2.24.1 >
On Wed, Jan 15, 2020 at 1:37 PM Jan Hubicka <hubicka@ucw.cz> wrote: > > > gcc/ChangeLog: > > > > 2020-01-15 Martin Liska <mliska@suse.cz> > > > > * ipa-profile.c (ipa_profile_read_edge_summary): Do not allow > > 2 calls of streamer_read_hwi in a function call. > > Good catch, Martin! > > --- > > gcc/ipa-profile.c | 5 +++-- > > 1 file changed, 3 insertions(+), 2 deletions(-) > > > > diff --git a/gcc/ipa-profile.c b/gcc/ipa-profile.c > > index fc231c916b7..03272f20987 100644 > > --- a/gcc/ipa-profile.c > > +++ b/gcc/ipa-profile.c > > @@ -451,8 +451,9 @@ ipa_profile_read_edge_summary (class lto_input_block *ib, cgraph_edge *edge) > > > > for (i = 0; i < len; i++) > > { > > - speculative_call_target item (streamer_read_hwi (ib), > > - streamer_read_hwi (ib)); > > + unsigned int target_id = streamer_read_hwi (ib); > > + int target_probability = streamer_read_hwi (ib); > > + speculative_call_target item (target_id, target_probability); > > David, this may be interesting case for analyzer/warning. This surfaced > in LTO stremaing for second time quite recently and leads to hard to > find bugs. > > While day before yesterday in pub I argued that warning for nested > function calls is not a good way since it would warn too often, perhaps > we want to have some way to annotate streamer functions to make it clear > that we do not want them to appear inside function call parameters where > evaluation order is undefined. Maybe one can always warn if you call the same function twice (and the function appears to have side-effects)? Might fire too often for tree checking functions tho. Richard. > Honza > > csum->speculative_call_targets.safe_push (item); > > } > > } > > -- > > 2.24.1 > > >
> On Wed, Jan 15, 2020 at 1:37 PM Jan Hubicka <hubicka@ucw.cz> wrote: > > > > > gcc/ChangeLog: > > > > > > 2020-01-15 Martin Liska <mliska@suse.cz> > > > > > > * ipa-profile.c (ipa_profile_read_edge_summary): Do not allow > > > 2 calls of streamer_read_hwi in a function call. > > > > Good catch, Martin! > > > --- > > > gcc/ipa-profile.c | 5 +++-- > > > 1 file changed, 3 insertions(+), 2 deletions(-) > > > > > > diff --git a/gcc/ipa-profile.c b/gcc/ipa-profile.c > > > index fc231c916b7..03272f20987 100644 > > > --- a/gcc/ipa-profile.c > > > +++ b/gcc/ipa-profile.c > > > @@ -451,8 +451,9 @@ ipa_profile_read_edge_summary (class lto_input_block *ib, cgraph_edge *edge) > > > > > > for (i = 0; i < len; i++) > > > { > > > - speculative_call_target item (streamer_read_hwi (ib), > > > - streamer_read_hwi (ib)); > > > + unsigned int target_id = streamer_read_hwi (ib); > > > + int target_probability = streamer_read_hwi (ib); > > > + speculative_call_target item (target_id, target_probability); > > > > David, this may be interesting case for analyzer/warning. This surfaced > > in LTO stremaing for second time quite recently and leads to hard to > > find bugs. > > > > While day before yesterday in pub I argued that warning for nested > > function calls is not a good way since it would warn too often, perhaps > > we want to have some way to annotate streamer functions to make it clear > > that we do not want them to appear inside function call parameters where > > evaluation order is undefined. > > Maybe one can always warn if you call the same function twice (and the > function appears to have side-effects)? Might fire too often for tree checking > functions tho. Yep warning always when function calls appear within different parameters of a function calls seems like something we would not be able to enable by default... Honza > > Richard. > > > Honza > > > csum->speculative_call_targets.safe_push (item); > > > } > > > } > > > -- > > > 2.24.1 > > > > >
diff --git a/gcc/cgraph.c b/gcc/cgraph.c index 5ba33a5a0cc..2f64f782a17 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -857,6 +857,8 @@ symbol_table::create_edge (cgraph_node *caller, cgraph_node *callee, edge->prev_callee = NULL; edge->next_callee = NULL; edge->lto_stmt_uid = 0; + edge->target_prob = 0; + edge->speculative_id = 0; edge->count = count; edge->call_stmt = call_stmt; @@ -1043,10 +1045,16 @@ cgraph_edge::remove (void) the reference representing the if conditional and attaches them all to the original indirect call statement. + speculative_id is used to link direct calls with their corresponding + IPA_REF_ADDR references when representing speculative calls. + + target_prob is the probability of the speculative call. + Return direct edge created. */ cgraph_edge * -cgraph_edge::make_speculative (cgraph_node *n2, profile_count direct_count) +cgraph_edge::make_speculative (cgraph_node *n2, profile_count direct_count, + unsigned int speculative_id, int target_prob) { cgraph_node *n = caller; ipa_ref *ref = NULL; @@ -1064,24 +1072,53 @@ cgraph_edge::make_speculative (cgraph_node *n2, profile_count direct_count) else e2->can_throw_external = can_throw_external; e2->lto_stmt_uid = lto_stmt_uid; + e2->speculative_id = speculative_id; + e2->target_prob = target_prob; e2->in_polymorphic_cdtor = in_polymorphic_cdtor; count -= e2->count; symtab->call_edge_duplication_hooks (this, e2); ref = n->create_reference (n2, IPA_REF_ADDR, call_stmt); ref->lto_stmt_uid = lto_stmt_uid; + ref->speculative_id = speculative_id; ref->speculative = speculative; n2->mark_address_taken (); return e2; } -/* Speculative call consist of three components: - 1) an indirect edge representing the original call - 2) an direct edge representing the new call - 3) ADDR_EXPR reference representing the speculative check. - All three components are attached to single statement (the indirect - call) and if one of them exists, all of them must exist. +/* Speculative calls represent a transformation of indirect calls + which may be later inserted into gimple in the following form: + + if (call_dest == target1) + target1 (); + else if (call_dest == target2) + target2 (); + else + call_dest (); + + This is a win in the case when target1 and target2 are common values for + call_dest as determined by ipa-devirt or indirect call profiling. + In particular this may enable inlining and other optimizations. + + Speculative call consists of the following main components: + + 1) One or more "speculative" direct call (num_speculative_call_targets is + speculative direct call count belongs to the speculative indirect call) + 2) One or more IPA_REF_ADDR references (representing the fact that code above + takes address of target1 and target2) + 3) The fallback "speculative" indirect call - Given speculative call edge, return all three components. + Direct calls and corresponding references are linked by + speculative_id. + + speculative_call_info returns triple + (direct_call, indirect call, IPA_REF_ADDR reference) + when called on one edge participating in the speculative call: + + 1) If called on direct call, its corresponding IPA_REF_ADDR and related + indirect call are returned. + + 2) If called on indirect call, it will return one of direct edges and its + matching IPA_REF_ADDR. */ void @@ -1121,7 +1158,7 @@ cgraph_edge::speculative_call_info (cgraph_edge *&direct, reference = NULL; for (i = 0; e->caller->iterate_reference (i, ref); i++) - if (ref->speculative + if (ref->speculative && ref->speculative_id == e->speculative_id && ((ref->stmt && ref->stmt == e->call_stmt) || (!ref->stmt && ref->lto_stmt_uid == e->lto_stmt_uid))) { @@ -1137,7 +1174,16 @@ cgraph_edge::speculative_call_info (cgraph_edge *&direct, /* Speculative call edge turned out to be direct call to CALLEE_DECL. Remove the speculative call sequence and return edge representing the call. - It is up to caller to redirect the call as appropriate. */ + + For "speculative" indirect call that contains multiple "speculative" + targets (i.e. edge->indirect_info->num_speculative_call_targets > 1), + decrease the count and only remove current direct edge. + + If no speculative direct call left to the speculative indirect call, remove + the speculative of both the indirect call and corresponding direct edge. + + It is up to caller to iteratively resolve each "speculative" direct call and + redirect the call as appropriate. */ cgraph_edge * cgraph_edge::resolve_speculation (tree callee_decl) @@ -1182,7 +1228,16 @@ cgraph_edge::resolve_speculation (tree callee_decl) in the functions inlined through it. */ } edge->count += e2->count; - edge->speculative = false; + if (edge->num_speculative_call_targets_p ()) + { + /* The indirect edge has multiple speculative targets, don't remove + speculative until all related direct edges are resolved. */ + edge->indirect_info->num_speculative_call_targets--; + if (!edge->indirect_info->num_speculative_call_targets) + edge->speculative = false; + } + else + edge->speculative = false; e2->speculative = false; ref->remove_reference (); if (e2->indirect_unknown_callee || e2->inline_failed) @@ -1242,7 +1297,17 @@ cgraph_edge::make_direct (cgraph_node *callee) } /* If necessary, change the function declaration in the call statement - associated with E so that it corresponds to the edge callee. */ + associated with E so that it corresponds to the edge callee. + + The edge could be one of speculative direct call generated from speculative + indirect call. In this circumstance, decrease the speculative targets + count (i.e. num_speculative_call_targets) and redirect call stmt to the + corresponding i-th target. If no speculative direct call left to the + speculative indirect call, remove "speculative" of the indirect call and + also redirect stmt to it's final direct target. + + It is up to caller to iteratively transform each "speculative" + direct call as appropriate. */ gimple * cgraph_edge::redirect_call_stmt_to_callee (void) @@ -1290,7 +1355,17 @@ cgraph_edge::redirect_call_stmt_to_callee (void) e->caller->set_call_stmt_including_clones (e->call_stmt, new_stmt, false); e->count = gimple_bb (e->call_stmt)->count; - e2->speculative = false; + if (e2->num_speculative_call_targets_p ()) + { + /* The indirect edge has multiple speculative targets, don't + remove speculative until all related direct edges are + redirected. */ + e2->indirect_info->num_speculative_call_targets--; + if (!e2->indirect_info->num_speculative_call_targets) + e2->speculative = false; + } + else + e2->speculative = false; e2->count = gimple_bb (e2->call_stmt)->count; ref->speculative = false; ref->stmt = NULL; @@ -2102,6 +2177,8 @@ cgraph_node::dump (FILE *f) if (edge->indirect_info->vptr_changed) fprintf (f, " (vptr maybe changed)"); } + fprintf (f, " Num speculative call targets: %i", + edge->indirect_info->num_speculative_call_targets); fprintf (f, "\n"); if (edge->indirect_info->polymorphic) edge->indirect_info->context.dump (f); @@ -3392,7 +3469,7 @@ cgraph_node::verify_node (void) for (e = callees; e; e = e->next_callee) { - if (!e->aux) + if (!e->aux && !e->speculative) { error ("edge %s->%s has no corresponding call_stmt", identifier_to_locale (e->caller->name ()), @@ -3731,6 +3808,14 @@ cgraph_edge::possibly_call_in_translation_unit_p (void) return node->get_availability () >= AVAIL_INTERPOSABLE; } +/* Return num_speculative_targets of this edge. */ + +int +cgraph_edge::num_speculative_call_targets_p (void) +{ + return indirect_info ? indirect_info->num_speculative_call_targets : 0; +} + /* A stashed copy of "symtab" for use by selftest::symbol_table_test. This needs to be a global so that it can be a GC root, and thus prevent the stashed copy from being garbage-collected if the GC runs diff --git a/gcc/cgraph.h b/gcc/cgraph.h index e96cb51d803..4678d9baeb8 100644 --- a/gcc/cgraph.h +++ b/gcc/cgraph.h @@ -1703,10 +1703,9 @@ public: int param_index; /* ECF flags determined from the caller. */ int ecf_flags; - /* Profile_id of common target obtained from profile. */ - int common_target_id; - /* Probability that call will land in function with COMMON_TARGET_ID. */ - int common_target_probability; + + /* Number of speculative call targets, it's less than GCOV_TOPN_VALUES. */ + unsigned num_speculative_call_targets : 16; /* Set when the call is a virtual call with the parameter being the associated object pointer rather than a simple direct call. */ @@ -1762,10 +1761,14 @@ public: /* Turn edge into speculative call calling N2. Update the profile so the direct call is taken COUNT times - with FREQUENCY. */ - cgraph_edge *make_speculative (cgraph_node *n2, profile_count direct_count); - - /* Given speculative call edge, return all three components. */ + with FREQUENCY. speculative_id is used to link direct calls with their + corresponding IPA_REF_ADDR references when representing speculative calls. + target_prob is the probability of the speculative call. */ + cgraph_edge *make_speculative (cgraph_node *n2, profile_count direct_count, + unsigned int speculative_id = 0, + int target_prob = 0); + + /* Given speculative call edge, return all three components. */ void speculative_call_info (cgraph_edge *&direct, cgraph_edge *&indirect, ipa_ref *&reference); @@ -1822,6 +1825,9 @@ public: be internal to the current translation unit. */ bool possibly_call_in_translation_unit_p (void); + /* Return num_speculative_targets of this edge. */ + int num_speculative_call_targets_p (void); + /* Expected number of executions: calculated in profile.c. */ profile_count count; cgraph_node *caller; @@ -1841,6 +1847,11 @@ public: /* The stmt_uid of call_stmt. This is used by LTO to recover the call_stmt when the function is serialized in. */ unsigned int lto_stmt_uid; + /* target_prob is the probability of the speculative call. */ + unsigned int target_prob; + /* speculative id is used to link direct calls with their corresponding + IPA_REF_ADDR references when representing speculative calls. */ + unsigned int speculative_id : 16; /* Whether this edge was made direct by indirect inlining. */ unsigned int indirect_inlining_edge : 1; /* Whether this edge describes an indirect call with an undetermined diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c index dbdeb4510b4..21ff0a2687d 100644 --- a/gcc/cgraphclones.c +++ b/gcc/cgraphclones.c @@ -133,6 +133,7 @@ cgraph_edge::clone (cgraph_node *n, gcall *call_stmt, unsigned stmt_uid, new_edge->inline_failed = inline_failed; new_edge->indirect_inlining_edge = indirect_inlining_edge; new_edge->lto_stmt_uid = stmt_uid; + new_edge->speculative_id = speculative_id; /* Clone flags that depend on call_stmt availability manually. */ new_edge->can_throw_external = can_throw_external; new_edge->call_stmt_cannot_inline_p = call_stmt_cannot_inline_p; diff --git a/gcc/ipa-fnsummary.c b/gcc/ipa-fnsummary.c index 5486f6496bd..83933900706 100644 --- a/gcc/ipa-fnsummary.c +++ b/gcc/ipa-fnsummary.c @@ -2603,7 +2603,7 @@ analyze_function_body (struct cgraph_node *node, bool early) edge_set_predicate (edge, &bb_predicate); if (edge->speculative) { - cgraph_edge *direct, *indirect; + cgraph_edge *direct, *indirect, *next_direct; ipa_ref *ref; edge->speculative_call_info (direct, indirect, ref); gcc_assert (direct == edge); @@ -2611,6 +2611,26 @@ analyze_function_body (struct cgraph_node *node, bool early) = ipa_call_summaries->get_create (indirect); ipa_call_summaries->duplicate (edge, indirect, es, es2); + + /* Create and duplicate call summaries for multiple + speculative call targets. */ + int num_specs = indirect->num_speculative_call_targets_p (); + if (num_specs > 1) + for (next_direct = edge->next_callee; + next_direct && --num_specs; + next_direct = next_direct->next_callee) + { + next_direct->speculative_call_info (direct, indirect, + ref); + if (direct == next_direct && next_direct->speculative + && edge->call_stmt == stmt) + { + ipa_call_summary *es3 + = ipa_call_summaries->get_create (next_direct); + ipa_call_summaries->duplicate (edge, next_direct, + es, es3); + } + } } } diff --git a/gcc/ipa-profile.c b/gcc/ipa-profile.c index 4b28b94aaad..20eba2c6953 100644 --- a/gcc/ipa-profile.c +++ b/gcc/ipa-profile.c @@ -159,7 +159,99 @@ dump_histogram (FILE *file, vec<histogram_entry *> histogram) } } -/* Collect histogram from CFG profiles. */ +/* Structure containing speculative target information from profile. */ + +struct speculative_call_target +{ + speculative_call_target (unsigned int id = 0, int prob = 0) + : target_id (id), target_probability (prob) + { + } + + /* Profile_id of target obtained from profile. */ + unsigned int target_id; + /* Probability that call will land in function with target_id. */ + unsigned int target_probability; +}; + +class speculative_call_summary +{ +public: + speculative_call_summary () : speculative_call_targets () + {} + + auto_vec<speculative_call_target> speculative_call_targets; + + void dump (FILE *f); + +}; + + /* Class to manage call summaries. */ + +class ipa_profile_call_summaries + : public call_summary<speculative_call_summary *> +{ +public: + ipa_profile_call_summaries (symbol_table *table) + : call_summary<speculative_call_summary *> (table) + {} + + /* Duplicate info when an edge is cloned. */ + virtual void duplicate (cgraph_edge *, cgraph_edge *, + speculative_call_summary *old_sum, + speculative_call_summary *new_sum); +}; + +static ipa_profile_call_summaries *call_sums = NULL; + +/* Dump all information in speculative call summary to F. */ + +void +speculative_call_summary::dump (FILE *f) +{ + cgraph_node *n2; + + unsigned spec_count = speculative_call_targets.length (); + for (unsigned i = 0; i < spec_count; i++) + { + speculative_call_target item = speculative_call_targets[i]; + n2 = find_func_by_profile_id (item.target_id); + if (n2) + fprintf (f, " The %i speculative target is %s with prob %3.2f\n", i, + n2->dump_name (), + item.target_probability / (float) REG_BR_PROB_BASE); + else + fprintf (f, " The %i speculative target is %u with prob %3.2f\n", i, + item.target_id, + item.target_probability / (float) REG_BR_PROB_BASE); + } +} + +/* Duplicate info when an edge is cloned. */ + +void +ipa_profile_call_summaries::duplicate (cgraph_edge *, cgraph_edge *, + speculative_call_summary *old_sum, + speculative_call_summary *new_sum) +{ + if (!old_sum) + return; + + unsigned old_count = old_sum->speculative_call_targets.length (); + if (!old_count) + return; + + new_sum->speculative_call_targets.reserve_exact (old_count); + new_sum->speculative_call_targets.quick_grow_cleared (old_count); + + for (unsigned i = 0; i < old_count; i++) + { + new_sum->speculative_call_targets[i] + = old_sum->speculative_call_targets[i]; + } +} + +/* Collect histogram and speculative target summaries from CFG profiles. */ static void ipa_profile_generate_summary (void) @@ -169,7 +261,10 @@ ipa_profile_generate_summary (void) basic_block bb; hash_table<histogram_hash> hashtable (10); - + + gcc_checking_assert (!call_sums); + call_sums = new ipa_profile_call_summaries (symtab); + FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (node) if (ENTRY_BLOCK_PTR_FOR_FN (DECL_STRUCT_FUNCTION (node->decl))->count.ipa_p ()) FOR_EACH_BB_FN (bb, DECL_STRUCT_FUNCTION (node->decl)) @@ -191,23 +286,35 @@ ipa_profile_generate_summary (void) if (h) { gcov_type val, count, all; - if (get_nth_most_common_value (NULL, "indirect call", h, - &val, &count, &all)) + struct cgraph_edge *e = node->get_edge (stmt); + if (e && !e->indirect_unknown_callee) + continue; + + speculative_call_summary *csum + = call_sums->get_create (e); + + for (unsigned j = 0; j < GCOV_TOPN_VALUES; j++) { - struct cgraph_edge * e = node->get_edge (stmt); - if (e && !e->indirect_unknown_callee) + if (!get_nth_most_common_value (NULL, "indirect call", + h, &val, &count, &all, + j)) + continue; + + if (val == 0) continue; - e->indirect_info->common_target_id = val; - e->indirect_info->common_target_probability - = GCOV_COMPUTE_SCALE (count, all); - if (e->indirect_info->common_target_probability > REG_BR_PROB_BASE) + speculative_call_target item ( + val, GCOV_COMPUTE_SCALE (count, all)); + if (item.target_probability > REG_BR_PROB_BASE) { if (dump_file) - fprintf (dump_file, "Probability capped to 1\n"); - e->indirect_info->common_target_probability = REG_BR_PROB_BASE; + fprintf (dump_file, + "Probability capped to 1\n"); + item.target_probability = REG_BR_PROB_BASE; } + csum->speculative_call_targets.safe_push (item); } + gimple_remove_histogram_value (DECL_STRUCT_FUNCTION (node->decl), stmt, h); } @@ -222,6 +329,33 @@ ipa_profile_generate_summary (void) histogram.qsort (cmp_counts); } +/* Serialize the speculative summary info for LTO. */ + +static void +ipa_profile_write_edge_summary (lto_simple_output_block *ob, + speculative_call_summary *csum) +{ + unsigned len = 0; + + len = csum->speculative_call_targets.length (); + + gcc_assert (len <= GCOV_TOPN_VALUES); + + streamer_write_hwi_stream (ob->main_stream, len); + + if (len) + { + unsigned spec_count = csum->speculative_call_targets.length (); + for (unsigned i = 0; i < spec_count; i++) + { + speculative_call_target item = csum->speculative_call_targets[i]; + gcc_assert (item.target_id); + streamer_write_hwi_stream (ob->main_stream, item.target_id); + streamer_write_hwi_stream (ob->main_stream, item.target_probability); + } + } +} + /* Serialize the ipa info for lto. */ static void @@ -238,10 +372,122 @@ ipa_profile_write_summary (void) streamer_write_uhwi_stream (ob->main_stream, histogram[i]->time); streamer_write_uhwi_stream (ob->main_stream, histogram[i]->size); } + + if (!call_sums) + return; + + /* Serialize speculative targets information. */ + unsigned int count = 0; + lto_symtab_encoder_t encoder = ob->decl_state->symtab_node_encoder; + lto_symtab_encoder_iterator lsei; + cgraph_node *node; + + for (lsei = lsei_start_function_in_partition (encoder); !lsei_end_p (lsei); + lsei_next_function_in_partition (&lsei)) + { + node = lsei_cgraph_node (lsei); + if (node->definition && node->has_gimple_body_p () + && node->indirect_calls) + count++; + } + + streamer_write_uhwi_stream (ob->main_stream, count); + + /* Process all of the functions. */ + for (lsei = lsei_start_function_in_partition (encoder); + !lsei_end_p (lsei) && count; lsei_next_function_in_partition (&lsei)) + { + cgraph_node *node = lsei_cgraph_node (lsei); + if (node->definition && node->has_gimple_body_p () + && node->indirect_calls) + { + int node_ref = lto_symtab_encoder_encode (encoder, node); + streamer_write_uhwi_stream (ob->main_stream, node_ref); + + for (cgraph_edge *e = node->indirect_calls; e; e = e->next_callee) + { + speculative_call_summary *csum = call_sums->get_create (e); + ipa_profile_write_edge_summary (ob, csum); + } + } + } + lto_destroy_simple_output_block (ob); } -/* Deserialize the ipa info for lto. */ +/* Dump all profile summary data for all cgraph nodes and edges to file F. */ + +static void +ipa_profile_dump_all_summaries (FILE *f) +{ + fprintf (dump_file, + "\n========== IPA-profile speculative targets: ==========\n"); + cgraph_node *node; + FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (node) + { + fprintf (f, "\nSummary for node %s:\n", node->dump_name ()); + for (cgraph_edge *e = node->indirect_calls; e; e = e->next_callee) + { + fprintf (f, " Summary for %s of indirect edge %d:\n", + e->caller->dump_name (), e->lto_stmt_uid); + speculative_call_summary *csum = call_sums->get_create (e); + csum->dump (f); + } + } + fprintf (f, "\n\n"); +} + +/* Read speculative targets information about edge for LTO WPA. */ + +static void +ipa_profile_read_edge_summary (class lto_input_block *ib, cgraph_edge *edge) +{ + unsigned i, len; + + len = streamer_read_hwi (ib); + gcc_assert (len <= GCOV_TOPN_VALUES); + + speculative_call_summary *csum = call_sums->get_create (edge); + + for (i = 0; i < len; i++) + { + speculative_call_target item (streamer_read_hwi (ib), + streamer_read_hwi (ib)); + csum->speculative_call_targets.safe_push (item); + } +} + +/* Read profile speculative targets section information for LTO WPA. */ + +static void +ipa_profile_read_summary_section (struct lto_file_decl_data *file_data, + class lto_input_block *ib) +{ + if (!ib) + return; + + lto_symtab_encoder_t encoder = file_data->symtab_node_encoder; + + unsigned int count = streamer_read_uhwi (ib); + + unsigned int i; + unsigned int index; + cgraph_node * node; + + for (i = 0; i < count; i++) + { + index = streamer_read_uhwi (ib); + encoder = file_data->symtab_node_encoder; + node + = dyn_cast<cgraph_node *> (lto_symtab_encoder_deref (encoder, index)); + + for (cgraph_edge *e = node->indirect_calls; e; e = e->next_callee) + ipa_profile_read_edge_summary (ib, e); + } +} + +/* Deserialize the IPA histogram and speculative targets summary info for LTO. + */ static void ipa_profile_read_summary (void) @@ -253,6 +499,9 @@ ipa_profile_read_summary (void) hash_table<histogram_hash> hashtable (10); + gcc_checking_assert (!call_sums); + call_sums = new ipa_profile_call_summaries (symtab); + while ((file_data = file_data_vec[j++])) { const char *data; @@ -273,6 +522,9 @@ ipa_profile_read_summary (void) account_time_size (&hashtable, histogram, count, time, size); } + + ipa_profile_read_summary_section (file_data, ib); + lto_destroy_simple_input_block (file_data, LTO_section_ipa_profile, ib, data, len); @@ -512,6 +764,7 @@ ipa_profile (void) int nindirect = 0, ncommon = 0, nunknown = 0, nuseless = 0, nconverted = 0; int nmismatch = 0, nimpossible = 0; bool node_map_initialized = false; + gcov_type threshold; if (dump_file) dump_histogram (dump_file, histogram); @@ -520,14 +773,12 @@ ipa_profile (void) overall_time += histogram[i]->count * histogram[i]->time; overall_size += histogram[i]->size; } + threshold = 0; if (overall_time) { - gcov_type threshold; - gcc_assert (overall_size); cutoff = (overall_time * param_hot_bb_count_ws_permille + 500) / 1000; - threshold = 0; for (i = 0; cumulated < cutoff; i++) { cumulated += histogram[i]->count * histogram[i]->time; @@ -563,10 +814,21 @@ ipa_profile (void) histogram.release (); histogram_pool.release (); - /* Produce speculative calls: we saved common target from porfiling into - e->common_target_id. Now, at link time, we can look up corresponding + /* Produce speculative calls: we saved common target from profiling into + e->target_id. Now, at link time, we can look up corresponding function node and produce speculative call. */ + gcc_checking_assert (call_sums); + + if (dump_file) + { + if (!node_map_initialized) + init_node_map (false); + node_map_initialized = true; + + ipa_profile_dump_all_summaries (dump_file); + } + FOR_EACH_DEFINED_FUNCTION (n) { bool update = false; @@ -578,13 +840,39 @@ ipa_profile (void) { if (n->count.initialized_p ()) nindirect++; - if (e->indirect_info->common_target_id) + + speculative_call_summary *csum = call_sums->get_create (e); + unsigned spec_count = csum->speculative_call_targets.length (); + if (spec_count) { if (!node_map_initialized) - init_node_map (false); + init_node_map (false); node_map_initialized = true; ncommon++; - n2 = find_func_by_profile_id (e->indirect_info->common_target_id); + + if (in_lto_p) + { + if (dump_file) + { + fprintf (dump_file, + "Updating hotness threshold in LTO mode.\n"); + fprintf (dump_file, "Updated min count: %" PRId64 "\n", + (int64_t) threshold / spec_count); + } + set_hot_bb_threshold (threshold / spec_count); + } + + unsigned speculative_id = 0; + bool speculative_found = false; + /* The code below is not formatted yet for review convenience. + Move to a seprate small function is not easy as too many local + variables used in it. Need format and remove this comments + once got approved. */ + for (unsigned i = 0; i < spec_count; i++) + { + speculative_call_target item + = csum->speculative_call_targets[i]; + n2 = find_func_by_profile_id (item.target_id); if (n2) { if (dump_file) @@ -593,11 +881,10 @@ ipa_profile (void) " other module %s => %s, prob %3.2f\n", n->dump_name (), n2->dump_name (), - e->indirect_info->common_target_probability - / (float)REG_BR_PROB_BASE); + item.target_probability + / (float) REG_BR_PROB_BASE); } - if (e->indirect_info->common_target_probability - < REG_BR_PROB_BASE / 2) + if (item.target_probability < REG_BR_PROB_BASE / 2) { nuseless++; if (dump_file) @@ -653,20 +940,26 @@ ipa_profile (void) n2 = alias; } nconverted++; - e->make_speculative - (n2, - e->count.apply_probability - (e->indirect_info->common_target_probability)); + e->make_speculative (n2, + e->count.apply_probability ( + item.target_probability), + speculative_id, + item.target_probability); update = true; + speculative_id++; + speculative_found = true; } } else { if (dump_file) fprintf (dump_file, "Function with profile-id %i not found.\n", - e->indirect_info->common_target_id); + item.target_id); nunknown++; } + } + if (speculative_found) + e->indirect_info->num_speculative_call_targets = speculative_id; } } if (update) @@ -729,6 +1022,10 @@ ipa_profile (void) } } free (order); + + if (dump_file && (dump_flags & TDF_DETAILS)) + symtab->dump (dump_file); + return 0; } diff --git a/gcc/ipa-ref.h b/gcc/ipa-ref.h index 00af24c77db..523f951d5cf 100644 --- a/gcc/ipa-ref.h +++ b/gcc/ipa-ref.h @@ -59,6 +59,9 @@ public: symtab_node *referred; gimple *stmt; unsigned int lto_stmt_uid; + /* speculative id is used to link direct calls with their corresponding + IPA_REF_ADDR references when representing speculative calls. */ + unsigned int speculative_id : 16; unsigned int referred_index; ENUM_BITFIELD (ipa_ref_use) use:3; unsigned int speculative:1; diff --git a/gcc/ipa-utils.c b/gcc/ipa-utils.c index cc65e2a7a00..a110c8856a0 100644 --- a/gcc/ipa-utils.c +++ b/gcc/ipa-utils.c @@ -675,68 +675,133 @@ ipa_merge_profiles (struct cgraph_node *dst, e2 = (e2 ? e2->next_callee : NULL), e = e->next_callee) { profile_count count = gimple_bb (e->call_stmt)->count; + /* Below code are introduced by r279373 of "Fix merging of common + traget info.". + + ipa-icf runs after ipa-profile, common_target_id with + common_target_probablity are useless in ipa-icf since they are + moved from cgraph.h to ipa-profile.c and processed already. + Need double circulation to find out each mapped direct speculative + edge and do prob merge. Not easy to construct a case to cover all + circumstances here. For src and dst both have multiple speculative + targets, only N:N maps are implemented, 2:0, 2:1, 0:2, 1:2 are not + implemented yet as too complicated and no test cases to cover. */ if (copy_counts) { - e->indirect_info->common_target_id - = e2->indirect_info->common_target_id; - e->indirect_info->common_target_probability - = e2->indirect_info->common_target_probability; + /* copy if both e and e2 have same num_speculative_call_targets. + */ + if (e->num_speculative_call_targets_p () + == e2->num_speculative_call_targets_p ()) + { + int num_specs = e->num_speculative_call_targets_p (); + cgraph_edge *direct, *indirect, *next_direct; + cgraph_edge *direct2, *indirect2, *next_direct2; + ipa_ref *ref; + for (next_direct = e; next_direct && num_specs--; + next_direct = direct->next_callee) + { + next_direct->speculative_call_info (direct, indirect, + ref); + + int num_specs2 = e2->num_speculative_call_targets_p (); + for (next_direct2 = e2; next_direct2 && num_specs2--; + next_direct2 = direct2->next_callee) + { + if (e2 && e2->speculative) + next_direct2->speculative_call_info (direct2, + indirect2, + ref); + if (direct->speculative_id == direct2->speculative_id + && direct->lto_stmt_uid == direct2->lto_stmt_uid) + { + direct->target_prob = direct2->target_prob; + break; + } + } + } + } + else + gcc_assert (e->num_speculative_call_targets_p () + && e->num_speculative_call_targets_p ()); } - else if (e->indirect_info->common_target_id - || e2->indirect_info->common_target_id) + else if (e->num_speculative_call_targets_p () + || e2->num_speculative_call_targets_p ()) { - sreal scale1 - = e->count.ipa().to_sreal_scale (count); - sreal scale2 - = e2->count.ipa().to_sreal_scale (count); - - if (scale1 == 0 && scale2 == 0) - scale1 = scale2 = 1; - sreal sum = scale1 + scale2; - int scaled_probability1 - = ((sreal)e->indirect_info->common_target_probability - * scale1 / sum).to_int (); - int scaled_probability2 - = ((sreal)e2->indirect_info->common_target_probability - * scale2 / sum).to_int (); - if (symtab->dump_file) + if (e->num_speculative_call_targets_p () + == e2->num_speculative_call_targets_p ()) { - fprintf (symtab->dump_file, - "Merging common targets %i prob %i" - " and %i prob %i with scales %f %f\n", - e->indirect_info->common_target_id, - e->indirect_info->common_target_probability, - e2->indirect_info->common_target_id, - e2->indirect_info->common_target_probability, - scale1.to_double (), - scale2.to_double ()); - fprintf (symtab->dump_file, "Combined BB count "); - count.dump (symtab->dump_file); - fprintf (symtab->dump_file, " dst edge count "); - e->count.dump (symtab->dump_file); - fprintf (symtab->dump_file, " src edge count "); - e2->count.dump (symtab->dump_file); - fprintf (symtab->dump_file, "\n"); + int num_specs = e->num_speculative_call_targets_p (); + cgraph_edge *direct, *indirect, *next_direct; + cgraph_edge *direct2, *indirect2, *next_direct2; + ipa_ref *ref; + for (next_direct = e; next_direct && num_specs--; + next_direct = direct->next_callee) + { + next_direct->speculative_call_info (direct, indirect, + ref); + + int num_specs2 = e2->num_speculative_call_targets_p (); + for (next_direct2 = e2; next_direct2 && num_specs2--; + next_direct2 = direct2->next_callee) + { + if (e2 && e2->speculative) + next_direct2->speculative_call_info (direct2, + indirect2, + ref); + if (direct->speculative_id == direct2->speculative_id + && direct->lto_stmt_uid == direct2->lto_stmt_uid) + { + sreal scale1 + = e->count.ipa().to_sreal_scale (count); + sreal scale2 + = e2->count.ipa().to_sreal_scale (count); + + if (scale1 == 0 && scale2 == 0) + scale1 = scale2 = 1; + sreal sum = scale1 + scale2; + int scaled_prob1 + = (((sreal)direct->target_prob) + * scale1 / sum).to_int (); + int scaled_prob2 + = (((sreal)direct2->target_prob) + * scale2 / sum).to_int (); + if (symtab->dump_file) + { + fprintf ( + symtab->dump_file, + "Merging speculative id %i prob %i" + " and %i prob %i with scales %f %f\n", + direct->speculative_id, direct->target_prob, + direct2->speculative_id, + direct2->target_prob, scale1.to_double (), + scale2.to_double ()); + fprintf (symtab->dump_file, + "Combined BB count "); + count.dump (symtab->dump_file); + fprintf (symtab->dump_file, + " dst edge count "); + e->count.dump (symtab->dump_file); + fprintf (symtab->dump_file, + " src edge count "); + e2->count.dump (symtab->dump_file); + fprintf (symtab->dump_file, "\n"); + } + direct->target_prob = scaled_prob1 + scaled_prob2; + break; + } + } + } } - if (e->indirect_info->common_target_id - == e2->indirect_info->common_target_id) - e->indirect_info->common_target_probability - = scaled_probability1 + scaled_probability2; - else if (!e2->indirect_info->common_target_id - || scaled_probability1 > scaled_probability2) - e->indirect_info->common_target_probability - = scaled_probability1; - else + else if (e->num_speculative_call_targets_p ()) { - e->indirect_info->common_target_id - = e2->indirect_info->common_target_id; - e->indirect_info->common_target_probability - = scaled_probability2; + /* Process if only dst is speculative. */ + gcc_assert (!e->num_speculative_call_targets_p ()); + } + else if (e2->num_speculative_call_targets_p ()) + { + /* Process if only src is speculative. */ + gcc_assert (!e2->num_speculative_call_targets_p ()); } - if (symtab->dump_file) - fprintf (symtab->dump_file, "Merged as %i prob %i\n", - e->indirect_info->common_target_id, - e->indirect_info->common_target_probability); } /* When call is speculative, we need to re-distribute probabilities diff --git a/gcc/lto-cgraph.c b/gcc/lto-cgraph.c index b5221cd41f9..454fba607dc 100644 --- a/gcc/lto-cgraph.c +++ b/gcc/lto-cgraph.c @@ -262,6 +262,7 @@ lto_output_edge (struct lto_simple_output_block *ob, struct cgraph_edge *edge, bp_pack_enum (&bp, cgraph_inline_failed_t, CIF_N_REASONS, edge->inline_failed); bp_pack_var_len_unsigned (&bp, uid); + bp_pack_value (&bp, edge->speculative_id, 16); bp_pack_value (&bp, edge->indirect_inlining_edge, 1); bp_pack_value (&bp, edge->speculative, 1); bp_pack_value (&bp, edge->call_stmt_cannot_inline_p, 1); @@ -284,16 +285,11 @@ lto_output_edge (struct lto_simple_output_block *ob, struct cgraph_edge *edge, | ECF_SIBCALL | ECF_LEAF | ECF_NOVOPS))); + + bp_pack_value (&bp, edge->indirect_info->num_speculative_call_targets, + 16); } streamer_write_bitpack (&bp); - if (edge->indirect_unknown_callee) - { - streamer_write_hwi_stream (ob->main_stream, - edge->indirect_info->common_target_id); - if (edge->indirect_info->common_target_id) - streamer_write_hwi_stream - (ob->main_stream, edge->indirect_info->common_target_probability); - } } /* Return if NODE contain references from other partitions. */ @@ -690,6 +686,8 @@ lto_output_ref (struct lto_simple_output_block *ob, struct ipa_ref *ref, if (ref->stmt) uid = gimple_uid (ref->stmt) + 1; streamer_write_hwi_stream (ob->main_stream, uid); + bp_pack_value (&bp, ref->speculative_id, 16); + streamer_write_bitpack (&bp); } } @@ -1428,7 +1426,11 @@ input_ref (class lto_input_block *ib, ref = referring_node->create_reference (node, use); ref->speculative = speculative; if (is_a <cgraph_node *> (referring_node)) - ref->lto_stmt_uid = streamer_read_hwi (ib); + { + ref->lto_stmt_uid = streamer_read_hwi (ib); + bp = streamer_read_bitpack (ib); + ref->speculative_id = bp_unpack_value (&bp, 16); + } } /* Read an edge from IB. NODES points to a vector of previously read nodes for @@ -1442,7 +1444,7 @@ input_edge (class lto_input_block *ib, vec<symtab_node *> nodes, { struct cgraph_node *caller, *callee; struct cgraph_edge *edge; - unsigned int stmt_id; + unsigned int stmt_id, speculative_id; profile_count count; cgraph_inline_failed_t inline_failed; struct bitpack_d bp; @@ -1466,6 +1468,7 @@ input_edge (class lto_input_block *ib, vec<symtab_node *> nodes, bp = streamer_read_bitpack (ib); inline_failed = bp_unpack_enum (&bp, cgraph_inline_failed_t, CIF_N_REASONS); stmt_id = bp_unpack_var_len_unsigned (&bp); + speculative_id = bp_unpack_value (&bp, 16); if (indirect) edge = caller->create_indirect_edge (NULL, 0, count); @@ -1475,6 +1478,7 @@ input_edge (class lto_input_block *ib, vec<symtab_node *> nodes, edge->indirect_inlining_edge = bp_unpack_value (&bp, 1); edge->speculative = bp_unpack_value (&bp, 1); edge->lto_stmt_uid = stmt_id; + edge->speculative_id = speculative_id; edge->inline_failed = inline_failed; edge->call_stmt_cannot_inline_p = bp_unpack_value (&bp, 1); edge->can_throw_external = bp_unpack_value (&bp, 1); @@ -1494,9 +1498,9 @@ input_edge (class lto_input_block *ib, vec<symtab_node *> nodes, if (bp_unpack_value (&bp, 1)) ecf_flags |= ECF_RETURNS_TWICE; edge->indirect_info->ecf_flags = ecf_flags; - edge->indirect_info->common_target_id = streamer_read_hwi (ib); - if (edge->indirect_info->common_target_id) - edge->indirect_info->common_target_probability = streamer_read_hwi (ib); + + edge->indirect_info->num_speculative_call_targets + = bp_unpack_value (&bp, 16); } } diff --git a/gcc/predict.c b/gcc/predict.c index 4b5b77e78d2..a5c0ebcb181 100644 --- a/gcc/predict.c +++ b/gcc/predict.c @@ -761,7 +761,6 @@ dump_prediction (FILE *file, enum br_predictor predictor, int probability, && bb->count.precise_p () && reason == REASON_NONE) { - gcc_assert (e->count ().precise_p ()); fprintf (file, ";;heuristics;%s;%" PRId64 ";%" PRId64 ";%.1f;\n", predictor_info[predictor].name, bb->count.to_gcov_type (), e->count ().to_gcov_type (), diff --git a/gcc/symtab.c b/gcc/symtab.c index 9c52192fced..b0a0d7fa0ef 100644 --- a/gcc/symtab.c +++ b/gcc/symtab.c @@ -605,6 +605,7 @@ symtab_node::create_reference (symtab_node *referred_node, ref->referred = referred_node; ref->stmt = stmt; ref->lto_stmt_uid = 0; + ref->speculative_id = 0; ref->use = use_type; ref->speculative = 0; @@ -662,6 +663,7 @@ symtab_node::clone_references (symtab_node *node) ref2 = create_reference (ref->referred, ref->use, ref->stmt); ref2->speculative = speculative; ref2->lto_stmt_uid = stmt_uid; + ref2->speculative_id = ref->speculative_id; } } @@ -680,6 +682,7 @@ symtab_node::clone_referring (symtab_node *node) ref2 = ref->referring->create_reference (this, ref->use, ref->stmt); ref2->speculative = speculative; ref2->lto_stmt_uid = stmt_uid; + ref2->speculative_id = ref->speculative_id; } } @@ -695,6 +698,7 @@ symtab_node::clone_reference (ipa_ref *ref, gimple *stmt) ref2 = create_reference (ref->referred, ref->use, stmt); ref2->speculative = speculative; ref2->lto_stmt_uid = stmt_uid; + ref2->speculative_id = ref->speculative_id; return ref2; } @@ -749,6 +753,7 @@ symtab_node::clear_stmts_in_references (void) { r->stmt = NULL; r->lto_stmt_uid = 0; + r->speculative_id = 0; } } diff --git a/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c new file mode 100644 index 00000000000..a13b08cd60e --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c @@ -0,0 +1,33 @@ +/* { dg-require-effective-target lto } */ +/* { dg-additional-sources "crossmodule-indir-call-topn-1a.c" } */ +/* { dg-require-profiling "-fprofile-generate" } */ +/* { dg-options "-O2 -flto -DDOJOB=1 -fdump-ipa-profile_estimate" } */ + +#include <stdio.h> + +typedef int (*fptr) (int); +int +one (int a); + +int +two (int a); + +fptr table[] = {&one, &two}; + +int +main() +{ + int i, x; + fptr p = &one; + + x = one (3); + + for (i = 0; i < 350000000; i++) + { + x = (*p) (3); + p = table[x]; + } + printf ("done:%d\n", x); +} + +/* { dg-final-use-not-autofdo { scan-pgo-wpa-ipa-dump "2 \\(200.00%\\) speculations produced." "profile_estimate" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c new file mode 100644 index 00000000000..a8c6e365fb9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c @@ -0,0 +1,22 @@ +/* It seems there is no way to avoid the other source of mulitple + source testcase from being compiled independently. Just avoid + error. */ +#ifdef DOJOB +int +one (int a) +{ + return 1; +} + +int +two (int a) +{ + return 0; +} +#else +int +main() +{ + return 0; +} +#endif diff --git a/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c new file mode 100644 index 00000000000..9b996fcf0ed --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c @@ -0,0 +1,40 @@ +/* { dg-require-effective-target lto } */ +/* { dg-additional-sources "crossmodule-indir-call-topn-1a.c" } */ +/* { dg-require-profiling "-fprofile-generate" } */ +/* { dg-options "-O2 -flto -DDOJOB=1 -fdump-ipa-profile_estimate" } */ + +#include <stdio.h> + +typedef int (*fptr) (int); +int +one (int a); + +int +two (int a); + +fptr table[] = {&one, &two}; + +int foo () +{ + int i, x; + fptr p = &one; + + x = one (3); + + for (i = 0; i < 350000000; i++) + { + x = (*p) (3); + p = table[x]; + } + return x; +} + +int +main() +{ + int x = foo (); + printf ("done:%d\n", x); +} + +/* { dg-final-use-not-autofdo { scan-pgo-wpa-ipa-dump "2 \\(200.00%\\) speculations produced." "profile_estimate" } } */ + diff --git a/gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-topn.c b/gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-topn.c new file mode 100644 index 00000000000..063996c71df --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-topn.c @@ -0,0 +1,37 @@ +/* { dg-require-profiling "-fprofile-generate" } */ +/* { dg-options "-O2 -fdump-ipa-profile_estimate" } */ + +#include <stdio.h> + +typedef int (*fptr) (int); +int +one (int a) +{ + return 1; +} + +int +two (int a) +{ + return 0; +} + +fptr table[] = {&one, &two}; + +int +main() +{ + int i, x; + fptr p = &one; + + one (3); + + for (i = 0; i < 350000000; i++) + { + x = (*p) (3); + p = table[x]; + } + printf ("done:%d\n", x); +} + +/* { dg-final-use-not-autofdo { scan-ipa-dump "2 \\(200.00%\\) speculations produced." "profile_estimate" } } */ diff --git a/gcc/testsuite/lib/scandump.exp b/gcc/testsuite/lib/scandump.exp index 42f5c01aa60..8b7cd7cfc16 100644 --- a/gcc/testsuite/lib/scandump.exp +++ b/gcc/testsuite/lib/scandump.exp @@ -70,6 +70,7 @@ proc scan-dump { args } { set output_file "[glob -nocomplain $dumpbase.[lindex $args 2]]" if { $output_file == "" } { verbose -log "$testcase: dump file does not exist" + verbose -log "dump file: $dumpbase.$suf" unresolved "$testname" return } diff --git a/gcc/testsuite/lib/scanwpaipa.exp b/gcc/testsuite/lib/scanwpaipa.exp index b5549fd688e..8aafd6c82e8 100644 --- a/gcc/testsuite/lib/scanwpaipa.exp +++ b/gcc/testsuite/lib/scanwpaipa.exp @@ -45,6 +45,29 @@ proc scan-wpa-ipa-dump { args } { } } +# Argument 0 is the regexp to match +# Argument 1 is the name of the dumped ipa pass +# Argument 2 handles expected failures and the like +proc scan-pgo-wpa-ipa-dump { args } { + + if { [llength $args] < 2 } { + error "scan-pgo-wpa-ipa-dump: too few arguments" + return + } + if { [llength $args] > 3 } { + error "scan-pgo-wpa-ipa-dump: too many arguments" + return + } + if { [llength $args] >= 3 } { + scan-dump "pgo-wpa-ipa" [lindex $args 0] \ + "\[0-9\]\[0-9\]\[0-9\]i.[lindex $args 1]" ".x02.wpa" \ + [lindex $args 2] + } else { + scan-dump "pgo-wpa-ipa" [lindex $args 0] \ + "\[0-9\]\[0-9\]\[0-9\]i.[lindex $args 1]" ".x02.wpa" + } +} + # Call pass if pattern is present given number of times, otherwise fail. # Argument 0 is the regexp to match # Argument 1 is number of times the regexp must be found diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 720f50eefec..8680abd3bed 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -2187,9 +2187,10 @@ copy_bb (copy_body_data *id, basic_block bb, num, den, true); - /* Speculative calls consist of two edges - direct and - indirect. Duplicate the whole thing and distribute - frequencies accordingly. */ + /* A speculative call is consist of edges - indirect edge + and direct edges (one indirect edeg may has multiple + direct edges). Duplicate the whole thing and + distribute frequencies accordingly. */ if (edge->speculative) { struct cgraph_edge *direct, *indirect; @@ -2197,8 +2198,33 @@ copy_bb (copy_body_data *id, basic_block bb, gcc_assert (!edge->indirect_unknown_callee); old_edge->speculative_call_info (direct, indirect, ref); + while (old_edge->next_callee + && old_edge->next_callee->speculative + && indirect->num_speculative_call_targets_p () + > 1) + { + id->dst_node->clone_reference (ref, stmt); + + edge = old_edge->next_callee; + edge = edge->clone (id->dst_node, call_stmt, + gimple_uid (stmt), num, den, + true); + old_edge = old_edge->next_callee; + gcc_assert (!edge->indirect_unknown_callee); + + /* If the indirect edge has multiple speculative + calls, iterate through all direct calls + associated to the speculative call and clone + all related direct edges before cloning the + related indirect edge. */ + old_edge->speculative_call_info (direct, indirect, + ref); + } profile_count indir_cnt = indirect->count; + + /* Duplicate the indirect edge after all direct edges + cloned. */ indirect = indirect->clone (id->dst_node, call_stmt, gimple_uid (stmt), num, den, diff --git a/gcc/value-prof.c b/gcc/value-prof.c index cc3542f0295..f64f515c1ee 100644 --- a/gcc/value-prof.c +++ b/gcc/value-prof.c @@ -106,7 +106,7 @@ static bool gimple_divmod_fixed_value_transform (gimple_stmt_iterator *); static bool gimple_mod_pow2_value_transform (gimple_stmt_iterator *); static bool gimple_mod_subtract_transform (gimple_stmt_iterator *); static bool gimple_stringops_transform (gimple_stmt_iterator *); -static bool gimple_ic_transform (gimple_stmt_iterator *); +static void gimple_ic_transform (gimple_stmt_iterator *); /* Allocate histogram value. */ @@ -616,8 +616,7 @@ gimple_value_profile_transformations (void) if (gimple_mod_subtract_transform (&gsi) || gimple_divmod_fixed_value_transform (&gsi) || gimple_mod_pow2_value_transform (&gsi) - || gimple_stringops_transform (&gsi) - || gimple_ic_transform (&gsi)) + || gimple_stringops_transform (&gsi)) { stmt = gsi_stmt (gsi); changed = true; @@ -628,6 +627,9 @@ gimple_value_profile_transformations (void) gsi = gsi_for_stmt (stmt); } } + + /* The function never thansforms a GIMPLE statement. */ + gimple_ic_transform (&gsi); } } @@ -1386,13 +1388,12 @@ gimple_ic (gcall *icall_stmt, struct cgraph_node *direct_call, return dcall_stmt; } -/* - For every checked indirect/virtual call determine if most common pid of - function/class method has probability more than 50%. If yes modify code of - this call to: - */ +/* There maybe multiple indirect targets in histogram. Check every + indirect/virtual call if callee function exists, if not exist, leave it to + LTO stage for later process. Modify code of this indirect call to an if-else + structure in ipa-profile finally. */ -static bool +static void gimple_ic_transform (gimple_stmt_iterator *gsi) { gcall *stmt; @@ -1402,52 +1403,58 @@ gimple_ic_transform (gimple_stmt_iterator *gsi) stmt = dyn_cast <gcall *> (gsi_stmt (*gsi)); if (!stmt) - return false; + return; if (gimple_call_fndecl (stmt) != NULL_TREE) - return false; + return; if (gimple_call_internal_p (stmt)) - return false; + return; histogram = gimple_histogram_value_of_type (cfun, stmt, HIST_TYPE_INDIR_CALL); if (!histogram) - return false; + return; - if (!get_nth_most_common_value (NULL, "indirect call", histogram, &val, - &count, &all)) - return false; + count = 0; + all = histogram->hvalue.counters[0]; - if (4 * count <= 3 * all) - return false; + for (unsigned j = 0; j < GCOV_TOPN_VALUES; j++) + { + if (!get_nth_most_common_value (NULL, "indirect call", histogram, &val, + &count, &all, j)) + return; - direct_call = find_func_by_profile_id ((int)val); + /* Minimum probability. should be higher than 25%. */ + if (4 * count <= all) + return; - if (direct_call == NULL) - { - if (val) + direct_call = find_func_by_profile_id ((int) val); + + if (direct_call == NULL) { - if (dump_enabled_p ()) - dump_printf_loc (MSG_MISSED_OPTIMIZATION, stmt, - "Indirect call -> direct call from other " - "module %T=> %i (will resolve only with LTO)\n", - gimple_call_fn (stmt), (int)val); + if (val) + { + if (dump_enabled_p ()) + dump_printf_loc ( + MSG_MISSED_OPTIMIZATION, stmt, + "Indirect call -> direct call from other " + "module %T=> %i (will resolve only with LTO)\n", + gimple_call_fn (stmt), (int) val); + } + return; } - return false; - } - if (dump_enabled_p ()) - { - dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, stmt, - "Indirect call -> direct call " - "%T => %T transformation on insn postponed\n", - gimple_call_fn (stmt), direct_call->decl); - dump_printf_loc (MSG_NOTE, stmt, - "hist->count %" PRId64 - " hist->all %" PRId64"\n", count, all); + if (dump_enabled_p ()) + { + dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, stmt, + "Indirect call -> direct call " + "%T => %T transformation on insn postponed\n", + gimple_call_fn (stmt), direct_call->decl); + dump_printf_loc (MSG_NOTE, stmt, + "hist->count %" PRId64 " hist->all %" PRId64 "\n", + count, all); + } } - - return true; } /* Return true if the stringop CALL shall be profiled. SIZE_ARG be diff --git a/gcc/value-prof.h b/gcc/value-prof.h index 77c06f60096..b3eeb57d37d 100644 --- a/gcc/value-prof.h +++ b/gcc/value-prof.h @@ -89,7 +89,6 @@ void verify_histograms (void); void free_histograms (function *); void stringop_block_profile (gimple *, unsigned int *, HOST_WIDE_INT *); gcall *gimple_ic (gcall *, struct cgraph_node *, profile_probability); -bool check_ic_target (gcall *, struct cgraph_node *); bool get_nth_most_common_value (gimple *stmt, const char *counter_type, histogram_value hist, gcov_type *value, gcov_type *count, gcov_type *all,