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:
		
				
					committed by
					
						
						Stefan Reinauer
					
				
			
			
				
	
			
			
			
						parent
						
							c0fbbd0416
						
					
				
				
					commit
					c6b0e7e2d9
				
			@@ -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;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user