aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/pt.c
diff options
context:
space:
mode:
authorJoseph Myers <jsm@polyomino.org.uk>2004-08-19 09:01:50 +0100
committerJoseph Myers <jsm28@gcc.gnu.org>2004-08-19 09:01:50 +0100
commite4c2c34bf162df585e5cda5a65a9a066b178a8e7 (patch)
tree116009208203aacb356d1646709739f9ef141289 /gcc/cp/pt.c
parent7a8554ceac51e81220e87493e7d8d0a1bd50fb38 (diff)
downloadgcc-e4c2c34bf162df585e5cda5a65a9a066b178a8e7.zip
gcc-e4c2c34bf162df585e5cda5a65a9a066b178a8e7.tar.gz
gcc-e4c2c34bf162df585e5cda5a65a9a066b178a8e7.tar.bz2
re PR c++/17041 (Erroneous "suggest parentheses around assignment used as truth value" warning in template members.)
PR c++/17041 * pt.c (tsubst_copy, tsubst_copy_and_build): Copy TREE_NO_WARNING from input for MODOP_EXPR. testsuite: * g++.dg/Wparentheses-3.C: New test. From-SVN: r86241
Diffstat (limited to 'gcc/cp/pt.c')
-rw-r--r--gcc/cp/pt.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 4107d1c..f4e9362 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -7667,6 +7667,7 @@ tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl)
(code, tsubst_copy (TREE_OPERAND (t, 0), args, complain, in_decl),
tsubst_copy (TREE_OPERAND (t, 1), args, complain, in_decl),
tsubst_copy (TREE_OPERAND (t, 2), args, complain, in_decl));
+ TREE_NO_WARNING (r) = TREE_NO_WARNING (t);
return r;
}
@@ -8331,10 +8332,14 @@ tsubst_copy_and_build (tree t,
return cxx_sizeof_or_alignof_expr (op1, TREE_CODE (t));
case MODOP_EXPR:
- return build_x_modify_expr
- (RECUR (TREE_OPERAND (t, 0)),
- TREE_CODE (TREE_OPERAND (t, 1)),
- RECUR (TREE_OPERAND (t, 2)));
+ {
+ tree r = build_x_modify_expr
+ (RECUR (TREE_OPERAND (t, 0)),
+ TREE_CODE (TREE_OPERAND (t, 1)),
+ RECUR (TREE_OPERAND (t, 2)));
+ TREE_NO_WARNING (r) = TREE_NO_WARNING (t);
+ return r;
+ }
case ARROW_EXPR:
op1 = tsubst_non_call_postfix_expression (TREE_OPERAND (t, 0),