This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: c/544: current GCC failed with "invalid lvalue in assignment"
- To: aj at suse dot de
- Subject: Re: c/544: current GCC failed with "invalid lvalue in assignment"
- From: Richard Henderson <rth at cygnus dot com>
- Date: Tue, 19 Sep 2000 07:29:47 -0700
- Cc: gcc-gnats at gcc dot gnu dot org, drepper at redhat dot com, gcc-patches at gcc dot gnu dot org
- References: <20000918062111.19673.qmail@sourceware.cygnus.com>
On Mon, Sep 18, 2000 at 06:21:11AM -0000, aj@suse.de wrote:
> rcmd2.i: In function `rcmd_af':
> rcmd2.i:28: invalid lvalue in assignment
I think it moderately interesting that this is the second time
I've fixed this bug. The last time was in the C++ front end:
2000-04-23 Richard Henderson <rth@cygnus.com>
* typeck.c (c_expand_asm_operands): Restore the original
contents of the output list.
r~
* c-typeck.c (c_expand_asm_operands): Restore the output tree
after expanding.
Index: c-typeck.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/c-typeck.c,v
retrieving revision 1.91
diff -c -p -d -r1.91 c-typeck.c
*** c-typeck.c 2000/09/19 03:26:10 1.91
--- c-typeck.c 2000/09/19 14:22:59
*************** c_expand_asm_operands (string, outputs,
*** 6603,6608 ****
--- 6603,6612 ----
expand_expr (build_modify_expr (o[i], NOP_EXPR, TREE_VALUE (tail)),
NULL_RTX, VOIDmode, EXPAND_NORMAL);
free_temp_slots ();
+
+ /* Restore the original value so that it's correct the next
+ time we expand this function. */
+ TREE_VALUE (tail) = o[i];
}
/* Detect modification of read-only values.
(Otherwise done by build_modify_expr.) */