aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/cp-gimplify.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp/cp-gimplify.c')
-rw-r--r--gcc/cp/cp-gimplify.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c
index 23a25e5..87c7e39 100644
--- a/gcc/cp/cp-gimplify.c
+++ b/gcc/cp/cp-gimplify.c
@@ -2260,12 +2260,17 @@ cxx_omp_finish_clause (tree c, gimple_seq *)
bool
cxx_omp_disregard_value_expr (tree decl, bool shared)
{
- return !shared
- && VAR_P (decl)
- && DECL_HAS_VALUE_EXPR_P (decl)
- && DECL_ARTIFICIAL (decl)
- && DECL_LANG_SPECIFIC (decl)
- && DECL_OMP_PRIVATIZED_MEMBER (decl);
+ if (shared)
+ return false;
+ if (VAR_P (decl)
+ && DECL_HAS_VALUE_EXPR_P (decl)
+ && DECL_ARTIFICIAL (decl)
+ && DECL_LANG_SPECIFIC (decl)
+ && DECL_OMP_PRIVATIZED_MEMBER (decl))
+ return true;
+ if (VAR_P (decl) && DECL_CONTEXT (decl) && is_capture_proxy (decl))
+ return true;
+ return false;
}
/* Fold expression X which is used as an rvalue if RVAL is true. */