Commit 8f4361eb by Andrew Pinski Committed by Andrew Pinski

re PR c++/28989 (post-increment of bool variable accepted as lvalue)

2007-08-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR c++/28989
        * tree.c (lvalue_p_1 <case SAVE_EXPR>): SAVE_EXPRs are never
        lvalues.

2007-08-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR c++/28989
        * g++.dg/expr/lval3.C: New test.
        * g++.dg/expr/lval4.C: New test.

From-SVN: r127603
parent 279e32c9
2007-08-17 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR c++/28989
* tree.c (lvalue_p_1 <case SAVE_EXPR>): SAVE_EXPRs are never
lvalues.
2007-08-17 Ollie Wild <aaw@google.com>
PR c++/31749
......
......@@ -92,11 +92,12 @@ lvalue_p_1 (tree ref,
switch (TREE_CODE (ref))
{
case SAVE_EXPR:
return clk_none;
/* preincrements and predecrements are valid lvals, provided
what they refer to are valid lvals. */
case PREINCREMENT_EXPR:
case PREDECREMENT_EXPR:
case SAVE_EXPR:
case TRY_CATCH_EXPR:
case WITH_CLEANUP_EXPR:
case REALPART_EXPR:
......
2007-08-17 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR c++/28989
* g++.dg/expr/lval3.C: New test.
* g++.dg/expr/lval4.C: New test.
2007-08-17 Ollie Wild <aaw@google.com>
PR c++/31749
// i++ is never an lvalue
void
f()
{
bool i = 0;
i++ = 3; // { dg-error "" }
}
// ++i is always an lvalue
void
f()
{
bool i = 0;
++i = 3;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment