aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-12-17 22:54:37 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2018-12-17 22:54:37 +0100
commit1e9d69235a88347d293dec7927e34dd38f6ee580 (patch)
treecaf2a15f344f9fad9f8519dd5171ebea378681f5 /gcc/cp
parentf4d458f3fab13daa8a8adbc7165ee4a7050db3f6 (diff)
downloadgcc-1e9d69235a88347d293dec7927e34dd38f6ee580.zip
gcc-1e9d69235a88347d293dec7927e34dd38f6ee580.tar.gz
gcc-1e9d69235a88347d293dec7927e34dd38f6ee580.tar.bz2
re PR c++/88410 (internal compiler error: output_operand: invalid expression as operand)
PR c++/88410 * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: For offsetof-like folding, call maybe_constant_value on val to see if it is INTEGER_CST. * g++.dg/cpp0x/pr88410.C: New test. From-SVN: r267220
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/cp-gimplify.c1
2 files changed, 7 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index a7ec887..ed652bd 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2018-12-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/88410
+ * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: For offsetof-like folding,
+ call maybe_constant_value on val to see if it is INTEGER_CST.
+
2018-12-17 Jonathan Wakely <jwakely@redhat.com>
PR c++/52321
diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c
index 5cb54ad..d27e39c 100644
--- a/gcc/cp/cp-gimplify.c
+++ b/gcc/cp/cp-gimplify.c
@@ -2317,6 +2317,7 @@ cp_fold (tree x)
{
val = TREE_OPERAND (val, 0);
STRIP_NOPS (val);
+ val = maybe_constant_value (val);
if (TREE_CODE (val) == INTEGER_CST)
return fold_offsetof (op0, TREE_TYPE (x));
}