From 29f4a15b749d86f25c9975dcb29d8d08aaee0594 Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Mon, 8 Oct 2007 16:36:29 +0000 Subject: [PATCH] no strict conv necessary after load [r16125] --- ir/ir/iropt.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/ir/ir/iropt.c b/ir/ir/iropt.c index a452d2519..7fb8ea5a1 100644 --- a/ir/ir/iropt.c +++ b/ir/ir/iropt.c @@ -1174,10 +1174,17 @@ static ir_node *equivalent_node_Conv(ir_node *n) { return n; } /* else both are strict conv, second is superflous */ - } else { - /* leave strict floating point Conv's */ - return n; + } else if(is_Proj(a)) { + ir_node *pred = get_Proj_pred(a); + if(is_Load(pred)) { + /* loads always return with the exact precision of n_mode */ + assert(get_Load_mode(pred) == n_mode); + return a; + } } + + /* leave strict floating point Conv's */ + return n; } n = a; DBG_OPT_ALGSIM0(oldn, n, FS_OPT_CONV); -- 2.20.1