diff options
author | Jakub Jelinek <jakub@redhat.com> | 2018-12-17 22:54:37 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2018-12-17 22:54:37 +0100 |
commit | 1e9d69235a88347d293dec7927e34dd38f6ee580 (patch) | |
tree | caf2a15f344f9fad9f8519dd5171ebea378681f5 /gcc/cp | |
parent | f4d458f3fab13daa8a8adbc7165ee4a7050db3f6 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/cp-gimplify.c | 1 |
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)); } |