From 71bc30a686cae0ee22cc4a987c3f199a629b971a Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Wed, 5 Sep 2007 22:47:43 +0000 Subject: [PATCH] set the tarval fp_ops mode depending on the current irg fp mode before doing constant folding [r15692] --- ir/ir/iropt.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ir/ir/iropt.c b/ir/ir/iropt.c index 4e1d6b5e4..f4e199c98 100644 --- a/ir/ir/iropt.c +++ b/ir/ir/iropt.c @@ -4518,6 +4518,8 @@ ir_node *optimize_node(ir_node *n) { if (get_opt_constant_folding()) { /* neither constants nor Tuple values can be evaluated */ if (iro != iro_Const && (get_irn_mode(n) != mode_T)) { + unsigned fp_model = get_irg_fp_model(current_ir_graph); + int old_fp_mode = tarval_enable_fp_ops((fp_model & fp_strict_algebraic) == 0); /* try to evaluate */ tv = computed_value(n); if (tv != tarval_bad) { @@ -4555,8 +4557,10 @@ ir_node *optimize_node(ir_node *n) { if (old_tp && get_type_mode(old_tp) == get_tarval_mode (tv)) set_Const_type(nw, old_tp); DBG_OPT_CSTEVAL(oldn, nw); + tarval_enable_fp_ops(old_fp_mode); return nw; } + tarval_enable_fp_ops(old_fp_mode); } } @@ -4625,6 +4629,8 @@ ir_node *optimize_in_place_2(ir_node *n) { if (get_opt_constant_folding()) { /* neither constants nor Tuple values can be evaluated */ if (iro != iro_Const && get_irn_mode(n) != mode_T) { + unsigned fp_model = get_irg_fp_model(current_ir_graph); + int old_fp_mode = tarval_enable_fp_ops((fp_model & fp_strict_algebraic) == 0); /* try to evaluate */ tv = computed_value(n); if (tv != tarval_bad) { @@ -4644,8 +4650,10 @@ ir_node *optimize_in_place_2(ir_node *n) { set_Const_type(n, old_tp); DBG_OPT_CSTEVAL(oldn, n); + tarval_enable_fp_ops(old_fp_mode); return n; } + tarval_enable_fp_ops(old_fp_mode); } } -- 2.20.1