From 30f6b7844aad824eb90adc0962a3663c73d5aa16 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Mon, 27 Jan 2014 23:30:38 -0500 Subject: re PR c++/58814 (ICE with volatile and attribute vector_size) PR c++/58814 * typeck.c (cp_build_modify_expr): Make the RHS an rvalue before stabilizing. From-SVN: r207163 --- gcc/cp/ChangeLog | 4 ++++ gcc/cp/typeck.c | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'gcc/cp') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 42adc48..b5693f2 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2014-01-27 Jason Merrill + PR c++/58814 + * typeck.c (cp_build_modify_expr): Make the RHS an rvalue before + stabilizing. + PR c++/58837 * typeck.c (cp_truthvalue_conversion): Use explicit comparison for FUNCTION_DECL. diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index b7ece1b..6268f7b 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -7399,8 +7399,7 @@ cp_build_modify_expr (tree lhs, enum tree_code modifycode, tree rhs, side effect associated with any single compound assignment operator. -- end note ] */ lhs = stabilize_reference (lhs); - if (TREE_SIDE_EFFECTS (rhs)) - rhs = mark_rvalue_use (rhs); + rhs = rvalue (rhs); rhs = stabilize_expr (rhs, &init); newrhs = cp_build_binary_op (input_location, modifycode, lhs, rhs, -- cgit v1.1