back out r5212 and r5210; Follow the thread of

http://www.coreboot.org/pipermail/coreboot/2010-March/056501.html
for the details.

Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Acked-by: Stefan Reinauer <stepan@coresystems.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5214 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Stefan Reinauer 2010-03-16 00:58:36 +00:00 committed by Stefan Reinauer
parent c0fbbd0416
commit c6b0e7e2d9
1 changed files with 10 additions and 17 deletions

View File

@ -1896,16 +1896,12 @@ static void use_triple(struct triple *used, struct triple *user)
return; return;
if (!user) if (!user)
return; return;
if (used->use == (void*)-1) ptr = &used->use;
used->use = 0; while(*ptr) {
if (used->use) { if ((*ptr)->member == user) {
ptr = &used->use; return;
while(*ptr) {
if ((*ptr)->member == user) {
return;
}
ptr = &(*ptr)->next;
} }
ptr = &(*ptr)->next;
} }
/* Append new to the head of the list, /* Append new to the head of the list,
* copy_func and rename_block_variables * copy_func and rename_block_variables
@ -11557,7 +11553,7 @@ static struct triple *constant_expr(struct compile_state *state)
static struct triple *assignment_expr(struct compile_state *state) static struct triple *assignment_expr(struct compile_state *state)
{ {
struct triple *def, *left, *left2, *right; struct triple *def, *left, *right;
int tok, op, sign; int tok, op, sign;
/* The C grammer in K&R shows assignment expressions /* The C grammer in K&R shows assignment expressions
* only taking unary expressions as input on their * only taking unary expressions as input on their
@ -11578,9 +11574,6 @@ static struct triple *assignment_expr(struct compile_state *state)
*/ */
def = conditional_expr(state); def = conditional_expr(state);
left = def; left = def;
left2 = left;
if (!(left2->id & TRIPLE_FLAG_FLATTENED))
left2 = copy_triple(state, left2);
switch((tok = peek(state))) { switch((tok = peek(state))) {
case TOK_EQ: case TOK_EQ:
lvalue(state, left); lvalue(state, left);
@ -11606,19 +11599,19 @@ static struct triple *assignment_expr(struct compile_state *state)
} }
def = write_expr(state, left, def = write_expr(state, left,
triple(state, op, left->type, triple(state, op, left->type,
read_expr(state, left2), right)); read_expr(state, left), right));
break; break;
case TOK_PLUSEQ: case TOK_PLUSEQ:
lvalue(state, left); lvalue(state, left);
eat(state, TOK_PLUSEQ); eat(state, TOK_PLUSEQ);
def = write_expr(state, left, def = write_expr(state, left,
mk_add_expr(state, left2, assignment_expr(state))); mk_add_expr(state, left, assignment_expr(state)));
break; break;
case TOK_MINUSEQ: case TOK_MINUSEQ:
lvalue(state, left); lvalue(state, left);
eat(state, TOK_MINUSEQ); eat(state, TOK_MINUSEQ);
def = write_expr(state, left, def = write_expr(state, left,
mk_sub_expr(state, left2, assignment_expr(state))); mk_sub_expr(state, left, assignment_expr(state)));
break; break;
case TOK_SLEQ: case TOK_SLEQ:
case TOK_SREQ: case TOK_SREQ:
@ -11642,7 +11635,7 @@ static struct triple *assignment_expr(struct compile_state *state)
} }
def = write_expr(state, left, def = write_expr(state, left,
triple(state, op, left->type, triple(state, op, left->type,
read_expr(state, left2), right)); read_expr(state, left), right));
break; break;
} }
return def; return def;