From 844b0125ef70e9741eab58229ce19e59c252c54c Mon Sep 17 00:00:00 2001 From: Ilya Verbin Date: Wed, 19 Nov 2014 13:52:12 +0000 Subject: [PATCH] re PR regression/63868 (Multiple failures in the libgomp test suite between r217458 and r217501.) PR regression/63868 * cgraph.c (cgraph_node::create): Guard g->have_offload with ifdef ENABLE_OFFLOADING. * omp-low.c (create_omp_child_function): Likewise. (expand_omp_target): Guard node->mark_force_output and offload_funcs with ifdef ENABLE_OFFLOADING. * varpool.c (varpool_node::get_create): Guard g->have_offload and offload_vars with ifdef ENABLE_OFFLOADING. From-SVN: r217773 --- gcc/ChangeLog | 11 +++++++++++ gcc/cgraph.c | 2 ++ gcc/omp-low.c | 11 ++++++++--- gcc/varpool.c | 2 ++ 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c3e3d145003..6e1f93069c1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2014-11-19 Ilya Verbin + + PR regression/63868 + * cgraph.c (cgraph_node::create): Guard g->have_offload with + ifdef ENABLE_OFFLOADING. + * omp-low.c (create_omp_child_function): Likewise. + (expand_omp_target): Guard node->mark_force_output and offload_funcs + with ifdef ENABLE_OFFLOADING. + * varpool.c (varpool_node::get_create): Guard g->have_offload and + offload_vars with ifdef ENABLE_OFFLOADING. + 2014-11-19 Felix Yang Shanyao Chen diff --git a/gcc/cgraph.c b/gcc/cgraph.c index cc0474429ba..18ae6a807ce 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -500,7 +500,9 @@ cgraph_node::create (tree decl) && lookup_attribute ("omp declare target", DECL_ATTRIBUTES (decl))) { node->offloadable = 1; +#ifdef ENABLE_OFFLOADING g->have_offload = true; +#endif } node->register_symbol (); diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 9874fa5e492..ddb720c4a7f 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -1962,7 +1962,9 @@ create_omp_child_function (omp_context *ctx, bool task_copy) if (is_targetreg_ctx (octx)) { cgraph_node::get_create (decl)->offloadable = 1; +#ifdef ENABLE_OFFLOADING g->have_offload = true; +#endif break; } } @@ -8288,7 +8290,6 @@ expand_omp_target (struct omp_region *region) if (kind == GF_OMP_TARGET_KIND_REGION) { unsigned srcidx, dstidx, num; - struct cgraph_node *node; /* If the target region needs data sent from the parent function, then the very first statement (except possible @@ -8415,18 +8416,22 @@ expand_omp_target (struct omp_region *region) DECL_STRUCT_FUNCTION (child_fn)->curr_properties = cfun->curr_properties; cgraph_node::add_new_function (child_fn, true); +#ifdef ENABLE_OFFLOADING /* Add the new function to the offload table. */ vec_safe_push (offload_funcs, child_fn); +#endif /* Fix the callgraph edges for child_cfun. Those for cfun will be fixed in a following pass. */ push_cfun (child_cfun); cgraph_edge::rebuild_edges (); +#ifdef ENABLE_OFFLOADING /* Prevent IPA from removing child_fn as unreachable, since there are no refs from the parent function to child_fn in offload LTO mode. */ - node = cgraph_node::get (child_fn); + struct cgraph_node *node = cgraph_node::get (child_fn); node->mark_force_output (); +#endif /* Some EH regions might become dead, see PR34608. If pass_cleanup_cfg isn't the first pass to happen with the @@ -12503,7 +12508,7 @@ omp_finish_file (void) varpool_node::finalize_decl (vars_decl); varpool_node::finalize_decl (funcs_decl); - } + } else { for (unsigned i = 0; i < num_funcs; i++) diff --git a/gcc/varpool.c b/gcc/varpool.c index 80dd496a49a..50f2e6e755a 100644 --- a/gcc/varpool.c +++ b/gcc/varpool.c @@ -171,9 +171,11 @@ varpool_node::get_create (tree decl) && lookup_attribute ("omp declare target", DECL_ATTRIBUTES (decl))) { node->offloadable = 1; +#ifdef ENABLE_OFFLOADING g->have_offload = true; if (!in_lto_p) vec_safe_push (offload_vars, decl); +#endif } node->register_symbol (); -- 2.30.2