r224035 - in /branches/gomp-4_1-branch: gcc/Cha...
jakub@gcc.gnu.org
jakub@gcc.gnu.org
Tue Jun 2 17:30:00 GMT 2015
Author: jakub
Date: Tue Jun 2 17:30:00 2015
New Revision: 224035
URL: https://gcc.gnu.org/viewcvs?rev=224035&root=gcc&view=rev
Log:
* gimplify.c (omp_check_private): Handle
omp_member_access_dummy_var vars.
(gimplify_scan_omp_clauses): Set DECL_NAME on
omp_member_access_dummy_var vars.
* omp-low.c (omp_member_access_dummy_var, unshare_and_remap_1,
unshare_and_remap): New functions.
(use_pointer_for_field): omp_member_access_dummy_var vars
don't need to be made addressable.
(build_outer_var_ref): Handle omp_member_access_dummy_var vars.
Handle OMP_CLAUSE_SHARED_FIRSTPRIVATE references.
(lower_send_clauses): Likewise.
(scan_sharing_clauses): Handle OMP_CLAUSE_SHARED_FIRSTPRIVATE
references.
(lower_send_shared_vars): Handle omp_member_access_dummy_var vars.
(create_task_copyfn): Fix up handling of
OMP_CLAUSE_SHARED_FIRSTPRIVATE decls.
(lower_omp_regimplify_p): Use IS_TYPE_OR_DECL_P macro.
(struct lower_omp_regimplify_operands_data): New type.
(lower_omp_regimplify_operands_p, lower_omp_regimplify_operands): New
functions.
(lower_omp_1): Use lower_omp_regimplify_operands instead of
gimple_regimplify_operands.
* omp-low.h (omp_member_access_dummy_var): New prototype.
gcc/cp/
* parser.c (cp_parser_lambda_body): Call
save_omp_privatization_clauses and restore_omp_privatization_clauses
around lambda body parsing.
(cp_parser_oacc_all_clauses, cp_parser_omp_all_clauses,
cp_parser_omp_for_loop, cp_omp_split_clauses, cp_parser_oacc_cache,
cp_parser_cilk_for): Adjust finish_omp_clauses callers.
(cp_parser_pragma): Call push_omp_privatization_clauses and
pop_omp_privatization_clauses around OpenMP pragma parsing.
* cp-gimplify.c (cxx_omp_disregard_value_expr): New function.
* pt.c (apply_late_template_attributes): Adjust finish_omp_clauses
and tsubst_omp_clauses callers.
(tsubst_omp_clauses): Add ALLOW_FIELDS argument, adjust possible
non-static data member arguments and pass ALLOW_FIELDS down to
finish_omp_clauses.
(tsubst_omp_for_iterator): Adjust finish_omp_clauses caller.
(tsubst_expr): Adjust tsubst_omp_clauses caller, call
push_omp_privatization_clauses and pop_omp_privatization_clauses
around instantiation of the constructs.
* cp-tree.h (DECL_OMP_PRIVATIZED_MEMBER): Define.
(finish_omp_clauses): Add ALLOW_FIELDS argument to prototype.
(push_omp_privatization_clauses, pop_omp_privatization_clauses,
save_omp_privatization_clauses, restore_omp_privatization_clauses,
cxx_omp_disregard_value_expr): New prototypes.
* cp-objcp-common.h (LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR): Redefine.
* semantics.c (omp_private_member_map, omp_private_member_vec): New
variables.
(finish_non_static_data_member): Return dummy decl for privatized
non-static data members.
(finish_omp_clauses): Add ALLOW_FIELDS argument. Handle
non-static data member privatization in {,first,last,copy}private,
reduction and linear clauses. Diagnose linear with predetermined
decls.
(push_omp_privatization_clauses, pop_omp_privatization_clauses,
save_omp_privatization_clauses, restore_omp_privatization_clauses):
New functions.
(finish_omp_for): Adjust finish_omp_clauses caller.
gcc/testsuite/
* g++.dg/gomp/clause-1.C (T::test): Remove dg-error
on privatization of non-static data members.
* g++.dg/gomp/member-1.C: New test.
* g++.dg/gomp/member-2.C: New test.
libgomp/
* testsuite/libgomp.c++/taskloop-5.C: New test.
* testsuite/libgomp.c++/member-1.C: New test.
* testsuite/libgomp.c++/member-2.C: New test.
Added:
branches/gomp-4_1-branch/gcc/testsuite/g++.dg/gomp/member-1.C
branches/gomp-4_1-branch/gcc/testsuite/g++.dg/gomp/member-2.C
branches/gomp-4_1-branch/libgomp/testsuite/libgomp.c++/member-1.C
branches/gomp-4_1-branch/libgomp/testsuite/libgomp.c++/member-2.C
branches/gomp-4_1-branch/libgomp/testsuite/libgomp.c++/taskloop-5.C
Modified:
branches/gomp-4_1-branch/gcc/ChangeLog.gomp
branches/gomp-4_1-branch/gcc/cp/ChangeLog.gomp
branches/gomp-4_1-branch/gcc/cp/cp-gimplify.c
branches/gomp-4_1-branch/gcc/cp/cp-objcp-common.h
branches/gomp-4_1-branch/gcc/cp/cp-tree.h
branches/gomp-4_1-branch/gcc/cp/parser.c
branches/gomp-4_1-branch/gcc/cp/pt.c
branches/gomp-4_1-branch/gcc/cp/semantics.c
branches/gomp-4_1-branch/gcc/gimplify.c
branches/gomp-4_1-branch/gcc/omp-low.c
branches/gomp-4_1-branch/gcc/omp-low.h
branches/gomp-4_1-branch/gcc/testsuite/ChangeLog.gomp
branches/gomp-4_1-branch/gcc/testsuite/g++.dg/gomp/clause-1.C
branches/gomp-4_1-branch/libgomp/ChangeLog.gomp
More information about the Gcc-cvs
mailing list