Mark omp thread functions as parallelized
2015-03-18 Tom de Vries <tom@codesourcery.com>
PR tree-optimization/65458
* omp-low.c: Add include of tree-parloops.h.
(expand_omp_taskreg): Call mark_parallelized_function for child_fn.
* tree-parloops.c (mark_parallelized_function): New function. Factor
out of ..
(create_loop_fn): ... here.
* tree-parloops.h (mark_parallelized_function): Declare.
---
gcc/omp-low.c | 2 ++
gcc/tree-parloops.c | 14 ++++++++++----
gcc/tree-parloops.h | 1 +
3 files changed, 13 insertions(+), 4 deletions(-)
@@ -108,6 +108,7 @@ along with GCC; see the file COPYING3. If not see
#include "context.h"
#include "lto-section-names.h"
#include "gomp-constants.h"
+#include "tree-parloops.h"
/* Lowering of OMP parallel and workshare constructs proceeds in two
@@ -5370,6 +5371,7 @@ expand_omp_taskreg (struct omp_region *region)
entry_stmt = last_stmt (region->entry);
child_fn = gimple_omp_taskreg_child_fn (entry_stmt);
child_cfun = DECL_STRUCT_FUNCTION (child_fn);
+ mark_parallelized_function (child_fn);
entry_bb = region->entry;
exit_bb = region->exit;
@@ -1439,6 +1439,16 @@ parallelized_function_p (tree fn)
return bitmap_bit_p (parallelized_functions, DECL_UID (fn));
}
+void
+mark_parallelized_function (tree fndecl)
+{
+ if (!parallelized_functions)
+ parallelized_functions = BITMAP_GGC_ALLOC ();
+
+ bitmap_set_bit (parallelized_functions, DECL_UID (fndecl));
+}
+
+
/* Creates and returns an empty function that will receive the body of
a parallelized loop. */
@@ -1459,10 +1469,6 @@ create_loop_fn (location_t loc)
type = build_function_type_list (void_type_node, ptr_type_node, NULL_TREE);
decl = build_decl (loc, FUNCTION_DECL, name, type);
- if (!parallelized_functions)
- parallelized_functions = BITMAP_GGC_ALLOC ();
- bitmap_set_bit (parallelized_functions, DECL_UID (decl));
-
TREE_STATIC (decl) = 1;
TREE_USED (decl) = 1;
DECL_ARTIFICIAL (decl) = 1;
@@ -21,5 +21,6 @@ along with GCC; see the file COPYING3. If not see
#define GCC_TREE_PARLOOPS_H
extern bool parallelized_function_p (tree);
+extern void mark_parallelized_function (tree);
#endif /* GCC_TREE_PARLOOPS_H */
--
1.9.1