diff options
author | Giuliano Belinassi <giuliano.belinassi@usp.br> | 2020-08-22 17:43:43 -0300 |
---|---|---|
committer | Giuliano Belinassi <giuliano.belinassi@usp.br> | 2020-08-22 17:43:43 -0300 |
commit | a926878ddbd5a98b272c22171ce58663fc04c3e0 (patch) | |
tree | 86af256e5d9a9c06263c00adc90e5fe348008c43 /gcc/tree-nested.c | |
parent | 542730f087133690b47e036dfd43eb0db8a650ce (diff) | |
parent | 07cbaed8ba7d1b6e4ab3a9f44175502a4e1ecdb1 (diff) | |
download | gcc-devel/autopar_devel.zip gcc-devel/autopar_devel.tar.gz gcc-devel/autopar_devel.tar.bz2 |
Merge branch 'autopar_rebase2' into autopar_develdevel/autopar_devel
Quickly commit changes in the rebase branch.
Diffstat (limited to 'gcc/tree-nested.c')
-rw-r--r-- | gcc/tree-nested.c | 66 |
1 files changed, 44 insertions, 22 deletions
diff --git a/gcc/tree-nested.c b/gcc/tree-nested.c index 6f696da..f74a727 100644 --- a/gcc/tree-nested.c +++ b/gcc/tree-nested.c @@ -160,9 +160,6 @@ create_tmp_var_for (struct nesting_info *info, tree type, const char *prefix) DECL_CONTEXT (tmp_var) = info->context; DECL_CHAIN (tmp_var) = info->new_local_var_chain; DECL_SEEN_IN_BIND_EXPR_P (tmp_var) = 1; - if (TREE_CODE (type) == COMPLEX_TYPE - || TREE_CODE (type) == VECTOR_TYPE) - DECL_GIMPLE_REG_P (tmp_var) = 1; info->new_local_var_chain = tmp_var; @@ -308,13 +305,14 @@ lookup_field_for_decl (struct nesting_info *info, tree decl, } else { - TREE_TYPE (field) = TREE_TYPE (decl); - DECL_SOURCE_LOCATION (field) = DECL_SOURCE_LOCATION (decl); - SET_DECL_ALIGN (field, DECL_ALIGN (decl)); - DECL_USER_ALIGN (field) = DECL_USER_ALIGN (decl); - TREE_ADDRESSABLE (field) = TREE_ADDRESSABLE (decl); - DECL_NONADDRESSABLE_P (field) = !TREE_ADDRESSABLE (decl); - TREE_THIS_VOLATILE (field) = TREE_THIS_VOLATILE (decl); + TREE_TYPE (field) = TREE_TYPE (decl); + DECL_SOURCE_LOCATION (field) = DECL_SOURCE_LOCATION (decl); + SET_DECL_ALIGN (field, DECL_ALIGN (decl)); + DECL_USER_ALIGN (field) = DECL_USER_ALIGN (decl); + DECL_IGNORED_P (field) = DECL_IGNORED_P (decl); + DECL_NONADDRESSABLE_P (field) = !TREE_ADDRESSABLE (decl); + TREE_NO_WARNING (field) = TREE_NO_WARNING (decl); + TREE_THIS_VOLATILE (field) = TREE_THIS_VOLATILE (decl); /* Declare the transformation and adjust the original DECL. For a variable or for a parameter when not optimizing, we make it point @@ -1396,7 +1394,6 @@ convert_nonlocal_omp_clauses (tree *pclauses, struct walk_stmt_info *wi) case OMP_CLAUSE__LOOPTEMP_: case OMP_CLAUSE__REDUCTEMP_: case OMP_CLAUSE__SIMDUID_: - case OMP_CLAUSE__GRIDDIM_: case OMP_CLAUSE__SIMT_: /* Anything else. */ default: @@ -1422,12 +1419,22 @@ convert_nonlocal_omp_clauses (tree *pclauses, struct walk_stmt_info *wi) if (OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER (clause)) DECL_CONTEXT (OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER (clause)) = info->context; + tree save_local_var_chain = info->new_local_var_chain; + info->new_local_var_chain = NULL; + gimple_seq *seq = &OMP_CLAUSE_REDUCTION_GIMPLE_INIT (clause); walk_body (convert_nonlocal_reference_stmt, - convert_nonlocal_reference_op, info, - &OMP_CLAUSE_REDUCTION_GIMPLE_INIT (clause)); + convert_nonlocal_reference_op, info, seq); + if (info->new_local_var_chain) + declare_vars (info->new_local_var_chain, + gimple_seq_first_stmt (*seq), false); + info->new_local_var_chain = NULL; + seq = &OMP_CLAUSE_REDUCTION_GIMPLE_MERGE (clause); walk_body (convert_nonlocal_reference_stmt, - convert_nonlocal_reference_op, info, - &OMP_CLAUSE_REDUCTION_GIMPLE_MERGE (clause)); + convert_nonlocal_reference_op, info, seq); + if (info->new_local_var_chain) + declare_vars (info->new_local_var_chain, + gimple_seq_first_stmt (*seq), false); + info->new_local_var_chain = save_local_var_chain; DECL_CONTEXT (OMP_CLAUSE_REDUCTION_PLACEHOLDER (clause)) = old_context; if (OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER (clause)) @@ -1437,15 +1444,31 @@ convert_nonlocal_omp_clauses (tree *pclauses, struct walk_stmt_info *wi) break; case OMP_CLAUSE_LASTPRIVATE: - walk_body (convert_nonlocal_reference_stmt, - convert_nonlocal_reference_op, info, - &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)); + { + tree save_local_var_chain = info->new_local_var_chain; + info->new_local_var_chain = NULL; + gimple_seq *seq = &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause); + walk_body (convert_nonlocal_reference_stmt, + convert_nonlocal_reference_op, info, seq); + if (info->new_local_var_chain) + declare_vars (info->new_local_var_chain, + gimple_seq_first_stmt (*seq), false); + info->new_local_var_chain = save_local_var_chain; + } break; case OMP_CLAUSE_LINEAR: - walk_body (convert_nonlocal_reference_stmt, - convert_nonlocal_reference_op, info, - &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause)); + { + tree save_local_var_chain = info->new_local_var_chain; + info->new_local_var_chain = NULL; + gimple_seq *seq = &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause); + walk_body (convert_nonlocal_reference_stmt, + convert_nonlocal_reference_op, info, seq); + if (info->new_local_var_chain) + declare_vars (info->new_local_var_chain, + gimple_seq_first_stmt (*seq), false); + info->new_local_var_chain = save_local_var_chain; + } break; default: @@ -2139,7 +2162,6 @@ convert_local_omp_clauses (tree *pclauses, struct walk_stmt_info *wi) case OMP_CLAUSE__LOOPTEMP_: case OMP_CLAUSE__REDUCTEMP_: case OMP_CLAUSE__SIMDUID_: - case OMP_CLAUSE__GRIDDIM_: case OMP_CLAUSE__SIMT_: /* Anything else. */ default: |