+2007-11-26 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/34215
+ * config/i386/i386.md (truncdfsf2): Select SLOT_TEMP stack slot if
+ virtual registers are instantiated.
+ (truncxfsf2): Ditto.
+ (truncxfdf2): Ditto.
+
2007-11-22 Matthias Klose <doko@ubuntu.com>
Backport from mainline:
;
else
{
- rtx temp = assign_386_stack_local (SFmode, SLOT_VIRTUAL);
+ int slot = virtuals_instantiated ? SLOT_TEMP : SLOT_VIRTUAL;
+ rtx temp = assign_386_stack_local (SFmode, slot);
emit_insn (gen_truncdfsf2_with_temp (operands[0], operands[1], temp));
DONE;
}
DONE;
}
else
- operands[2] = assign_386_stack_local (SFmode, SLOT_VIRTUAL);
+ {
+ int slot = virtuals_instantiated ? SLOT_TEMP : SLOT_VIRTUAL;
+ operands[2] = assign_386_stack_local (SFmode, slot);
+ }
})
(define_insn "*truncxfsf2_mixed"
DONE;
}
else
- operands[2] = assign_386_stack_local (DFmode, SLOT_VIRTUAL);
+ {
+ int slot = virtuals_instantiated ? SLOT_TEMP : SLOT_VIRTUAL;
+ operands[2] = assign_386_stack_local (DFmode, slot);
+ }
})
(define_insn "*truncxfdf2_mixed"
--- /dev/null
+/* Testcase by Martin Michlmayr <tbm@cyrius.com> */
+
+/* { dg-do compile { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
+/* { dg-options "-O2" } */
+
+double pow (double, double);
+
+void calc_score_dist (int mxdlen, long double d, long double **dist)
+{
+ unsigned long i, scr2;
+ for (i = 1; i <= mxdlen; i++)
+ {
+ for (scr2 = mxdlen; scr2 <= mxdlen + 10; scr2++)
+ {
+ }
+ dist[i][scr2] *= pow (1.0 / d, i);
+ }
+}