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.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c
index ede9892..2804958 100644
--- a/gcc/cp/cp-gimplify.c
+++ b/gcc/cp/cp-gimplify.c
@@ -2447,6 +2447,8 @@ cp_fold (tree x)
if (tree *cached = fold_cache->get (x))
return *cached;
+ uid_sensitive_constexpr_evaluation_checker c;
+
code = TREE_CODE (x);
switch (code)
{
@@ -2929,10 +2931,13 @@ cp_fold (tree x)
return org_x;
}
- fold_cache->put (org_x, x);
- /* Prevent that we try to fold an already folded result again. */
- if (x != org_x)
- fold_cache->put (x, x);
+ if (!c.evaluation_restricted_p ())
+ {
+ fold_cache->put (org_x, x);
+ /* Prevent that we try to fold an already folded result again. */
+ if (x != org_x)
+ fold_cache->put (x, x);
+ }
return x;
}