aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Verbin <ilya.verbin@intel.com>2014-11-19 13:52:12 +0000
committerIlya Verbin <iverbin@gcc.gnu.org>2014-11-19 13:52:12 +0000
commit844b0125ef70e9741eab58229ce19e59c252c54c (patch)
tree7425286d248e3efa9597683c1a1ba65ee1f7eb96
parent0096508a2590c3130e23f8c81f443065abcf545e (diff)
downloadgcc-844b0125ef70e9741eab58229ce19e59c252c54c.zip
gcc-844b0125ef70e9741eab58229ce19e59c252c54c.tar.gz
gcc-844b0125ef70e9741eab58229ce19e59c252c54c.tar.bz2
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
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/cgraph.c2
-rw-r--r--gcc/omp-low.c11
-rw-r--r--gcc/varpool.c2
4 files changed, 23 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c3e3d14..6e1f930 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+2014-11-19 Ilya Verbin <ilya.verbin@intel.com>
+
+ 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 <felix.yang@huawei.com>
Shanyao Chen <chenshanyao@huawei.com>
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index cc04744..18ae6a8 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 9874fa5..ddb720c 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 80dd496..50f2e6e 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 ();