fix mode querying for mode_T div nodes
authorMatthias Braun <matze@braunis.de>
Fri, 15 May 2009 11:20:44 +0000 (11:20 +0000)
committerMatthias Braun <matze@braunis.de>
Fri, 15 May 2009 11:20:44 +0000 (11:20 +0000)
[r25967]

ir/be/ia32/ia32_transform.c

index 217458a..32e961b 100644 (file)
@@ -1001,7 +1001,7 @@ static ir_node *get_fpcw(void)
 static ir_node *gen_binop_x87_float(ir_node *node, ir_node *op1, ir_node *op2,
                                     construct_binop_float_func *func)
 {
-       ir_mode             *mode  = get_irn_mode(node);
+       ir_mode             *mode = get_irn_mode(node);
        dbg_info            *dbgi;
        ir_node             *block, *new_block, *new_node;
        ia32_address_mode_t  am;
@@ -1011,6 +1011,10 @@ static ir_node *gen_binop_x87_float(ir_node *node, ir_node *op1, ir_node *op2,
         * variants */
        match_flags_t        flags = match_commutative;
 
+       /* happens for div nodes... */
+       if (mode == mode_T)
+               mode = get_divop_resmod(node);
+
        /* cannot use address mode with long double on x87 */
        if (get_mode_size_bits(mode) <= 64)
                flags |= match_am;