aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimplify.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2007-02-07 13:16:22 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2007-02-07 13:16:22 +0100
commite02a048f461136c26abbde5e609db372b0b692d6 (patch)
tree0dbce13b42cdf7ff6f06b7e4a999b86fadffd4f0 /gcc/gimplify.c
parentca6e5fe99408ffaec70249480e4fb7aaba3cd5a8 (diff)
downloadgcc-e02a048f461136c26abbde5e609db372b0b692d6.zip
gcc-e02a048f461136c26abbde5e609db372b0b692d6.tar.gz
gcc-e02a048f461136c26abbde5e609db372b0b692d6.tar.bz2
re PR c++/30703 (ICE Segmentation fault on using OpenMP)
PR c++/30703 * gimplify.c (gimplify_scan_omp_clauses): Remove special casing of INDIRECT_REF <RESULT_DECL>. * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref parameters and result decls in omp clauses. (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs by reference. * testsuite/libgomp.c++/pr30703.C: New test. From-SVN: r121688
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r--gcc/gimplify.c10
1 files changed, 0 insertions, 10 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 1e99757..7ac43f4 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -4747,11 +4747,6 @@ gimplify_scan_omp_clauses (tree *list_p, tree *pre_p, bool in_parallel,
remove = true;
break;
}
- /* Handle NRV results passed by reference. */
- if (TREE_CODE (decl) == INDIRECT_REF
- && TREE_CODE (TREE_OPERAND (decl, 0)) == RESULT_DECL
- && DECL_BY_REFERENCE (TREE_OPERAND (decl, 0)))
- OMP_CLAUSE_DECL (c) = decl = TREE_OPERAND (decl, 0);
omp_add_variable (ctx, decl, flags);
if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_REDUCTION
&& OMP_CLAUSE_REDUCTION_PLACEHOLDER (c))
@@ -4779,11 +4774,6 @@ gimplify_scan_omp_clauses (tree *list_p, tree *pre_p, bool in_parallel,
remove = true;
break;
}
- /* Handle NRV results passed by reference. */
- if (TREE_CODE (decl) == INDIRECT_REF
- && TREE_CODE (TREE_OPERAND (decl, 0)) == RESULT_DECL
- && DECL_BY_REFERENCE (TREE_OPERAND (decl, 0)))
- OMP_CLAUSE_DECL (c) = decl = TREE_OPERAND (decl, 0);
do_notice:
if (outer_ctx)
omp_notice_variable (outer_ctx, decl, true);