diff options
author | Diego Novillo <dnovillo@gcc.gnu.org> | 2010-06-01 10:05:17 -0400 |
---|---|---|
committer | Diego Novillo <dnovillo@gcc.gnu.org> | 2010-06-01 10:05:17 -0400 |
commit | 7bab65434ce0e49eeccc381dce41fe7cf348899e (patch) | |
tree | ab15a982d4a269f4bc6ceb4a128188ffa1ec7bfc /gcc/cp | |
parent | 41361b9fe57248555eab99ffe74a7943c147103b (diff) | |
download | gcc-7bab65434ce0e49eeccc381dce41fe7cf348899e.zip gcc-7bab65434ce0e49eeccc381dce41fe7cf348899e.tar.gz gcc-7bab65434ce0e49eeccc381dce41fe7cf348899e.tar.bz2 |
richi's fixes for c++ bootstrap
From-SVN: r160105
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/cvt.c | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c index 646610a..2654ccd 100644 --- a/gcc/cp/cvt.c +++ b/gcc/cp/cvt.c @@ -822,22 +822,26 @@ ocp_convert (tree type, tree expr, int convtype, int flags) tree convert_to_void (tree expr, const char *implicit, tsubst_flags_t complain) { - tree exprv; - if (expr == error_mark_node || TREE_TYPE (expr) == error_mark_node) return error_mark_node; - exprv = expr; - while (TREE_CODE (exprv) == COMPOUND_EXPR) - exprv = TREE_OPERAND (exprv, 1); - if (DECL_P (exprv) || handled_component_p (exprv)) - /* Expr is not being 'used' here, otherwise we whould have - called mark_{rl}value_use use here, which would have in turn - called mark_exp_read. Rather, we call mark_exp_read directly - to avoid some warnings when - -Wunused-but-set-{variable,parameter} is in effect. */ - mark_exp_read (exprv); + if (implicit == NULL) + mark_rvalue_use (expr); + else + { + tree exprv = expr; + + while (TREE_CODE (exprv) == COMPOUND_EXPR) + exprv = TREE_OPERAND (exprv, 1); + if (DECL_P (exprv) || handled_component_p (exprv)) + /* Expr is not being 'used' here, otherwise we whould have + called mark_{rl}value_use use here, which would have in turn + called mark_exp_read. Rather, we call mark_exp_read directly + to avoid some warnings when + -Wunused-but-set-{variable,parameter} is in effect. */ + mark_exp_read (exprv); + } if (!TREE_TYPE (expr)) return expr; |