From 0e7d9243fcf3926564aebe56dca364090fd55f55 Mon Sep 17 00:00:00 2001 From: Sebastian Buchwald Date: Thu, 15 Jan 2009 12:07:10 +0000 Subject: [PATCH] PBQP transformer doesn't support Mux nodes with constant values. [r25205] --- ir/be/ia32/bearch_ia32.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/ir/be/ia32/bearch_ia32.c b/ir/be/ia32/bearch_ia32.c index 96dce9154..fbeb4c4bb 100644 --- a/ir/be/ia32/bearch_ia32.c +++ b/ir/be/ia32/bearch_ia32.c @@ -2249,8 +2249,22 @@ static int ia32_is_mux_allowed(ir_node *sel, ir_node *phi_list, int i, int j) if (mode_is_float(mode)) { /* always support Mux(!float, C1, C2) */ - if (is_Const(t) && is_Const(f) && !mode_is_float(get_irn_mode(cl))) - continue; + if (is_Const(t) && is_Const(f) && + !mode_is_float(get_irn_mode(cl))) { + switch (be_transformer) { + case TRANSFORMER_DEFAULT: + /* always support Mux(!float, C1, C2) */ + continue; +#ifdef FIRM_GRGEN_BE + case TRANSFORMER_PBQP: + case TRANSFORMER_RAND: + /* no support for Mux(*, C1, C2) */ + return 0; +#endif + default: + panic("invalid transformer"); + } + } /* only abs or nabs supported */ if (! psi_is_Abs_or_Nabs(cmp, sel, t, f)) return 0; -- 2.20.1