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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127603
138bc75d-0d04-0410-961f-
82ee72b054a4
+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
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
--- /dev/null
+// i++ is never an lvalue
+void
+f()
+{
+ bool i = 0;
+ i++ = 3; // { dg-error "" }
+}
+
+
--- /dev/null
+// ++i is always an lvalue
+void
+f()
+{
+ bool i = 0;
+ ++i = 3;
+}
+
+