From 1e9d69235a88347d293dec7927e34dd38f6ee580 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 17 Dec 2018 22:54:37 +0100 Subject: re PR c++/88410 (internal compiler error: output_operand: invalid expression as operand) PR c++/88410 * cp-gimplify.c (cp_fold) : 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 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/cp-gimplify.c | 1 + 2 files changed, 7 insertions(+) (limited to 'gcc/cp') 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 + + PR c++/88410 + * cp-gimplify.c (cp_fold) : For offsetof-like folding, + call maybe_constant_value on val to see if it is INTEGER_CST. + 2018-12-17 Jonathan Wakely 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)); } -- cgit v1.1