Re: [PATCH 16/16] fix handling of integer constant expressions

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Al Viro
Date: Wednesday, June 27, 2007 - 6:18 am

On Wed, Jun 27, 2007 at 09:59:58PM +0900, Neil Booth wrote:

Son of a...  expand_comma() cannibalizes the node, should restore ->flags
to 0 (same as other similar suckers).


Ditto for expand_conditional, but there we should preserve the original
->flags instead - might be non-zero and we ought to do that after
expanding the taken branch...

From: Al Viro <viro@zeniv.linux.org.uk>
Date: Wed, 27 Jun 2007 09:10:54 -0400
Subject: [PATCH] fix the missed cannibalizing simplifications

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
---
 expand.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/expand.c b/expand.c
index f945518..9a536d5 100644
--- a/expand.c
+++ b/expand.c
@@ -429,8 +429,10 @@ static int expand_comma(struct expression *expr)
 
 	cost = expand_expression(expr->left);
 	cost += expand_expression(expr->right);
-	if (expr->left->type == EXPR_VALUE || expr->left->type == EXPR_FVALUE)
+	if (expr->left->type == EXPR_VALUE || expr->left->type == EXPR_FVALUE) {
 		*expr = *expr->right;
+		expr->flags = 0;
+	}
 	return cost;
 }
 
@@ -488,12 +490,15 @@ static int expand_conditional(struct expression *expr)
 
 	cond_cost = expand_expression(cond);
 	if (cond->type == EXPR_VALUE) {
+		unsigned flags = expr->flags;
 		if (!cond->value)
 			true = false;
 		if (!true)
 			true = cond;
+		cost = expand_expression(*true);
 		*expr = *true;
-		return expand_expression(expr);
+		expr->flags = flags;
+		return cost;
 	}
 
 	cost = expand_expression(true);
-- 
1.5.0-rc2.GIT

-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [PATCH 16/16] fix handling of integer constant expressions, Segher Boessenkool, (Sun Jun 24, 11:18 am)
Re: [PATCH 16/16] fix handling of integer constant expressions, Segher Boessenkool, (Sun Jun 24, 12:09 pm)
Re: [PATCH 16/16] fix handling of integer constant expressions, Segher Boessenkool, (Sun Jun 24, 12:40 pm)
Re: [PATCH 16/16] fix handling of integer constant expressions, Segher Boessenkool, (Sun Jun 24, 11:13 pm)
Re: [PATCH 16/16] fix handling of integer constant expressions, Segher Boessenkool, (Sun Jun 24, 11:16 pm)
Re: [PATCH 16/16] fix handling of integer constant expressions, Al Viro, (Wed Jun 27, 6:18 am)
Re: [PATCH 16/16] fix handling of integer constant expressions, Segher Boessenkool, (Thu Jun 28, 2:08 am)