+2005-11-10 Uros Bizjak <uros@kss-loka.si>
+
+ PR target/24315
+ * config/i386/i386.md (*pushdi2_rex64 splitter)
+ (*movdi_1_rex64 splitter): Delay splitting after
+ flow2 pass only when (optimize > 0 && flag_peephole2).
+
+2005-11-10 Uros Bizjak <uros@kss-loka.si>
+
+ PR target/19340
+ * reg-stack.c (reg_to_stack): Update register liveness also
+ for flag_sched2_use_traces.
+
2005-11-09 Per Bothner <per@bothner.com>
Uros Bizjak <uros@kss-loka.si>
(define_split
[(set (match_operand:DI 0 "push_operand" "")
(match_operand:DI 1 "immediate_operand" ""))]
- "TARGET_64BIT && (flow2_completed || (reload_completed && !flag_peephole2))
+ "TARGET_64BIT && ((optimize > 0 && flag_peephole2)
+ ? flow2_completed : reload_completed)
&& !symbolic_operand (operands[1], DImode)
&& !x86_64_immediate_operand (operands[1], DImode)"
[(set (match_dup 0) (match_dup 1))
(define_split
[(set (match_operand:DI 0 "memory_operand" "")
(match_operand:DI 1 "immediate_operand" ""))]
- "TARGET_64BIT && (flow2_completed || (reload_completed && !flag_peephole2))
+ "TARGET_64BIT && ((optimize > 0 && flag_peephole2)
+ ? flow2_completed : reload_completed)
&& !symbolic_operand (operands[1], DImode)
&& !x86_64_immediate_operand (operands[1], DImode)"
[(set (match_dup 2) (match_dup 3))
Also need to rebuild life when superblock scheduling is done
as it don't update liveness yet. */
if (!optimize
- || (flag_sched2_use_superblocks
+ || ((flag_sched2_use_superblocks || flag_sched2_use_traces)
&& flag_schedule_insns_after_reload))
{
count_or_remove_death_notes (NULL, 1);
+2005-11-10 Uros Bizjak <uros@kss-loka.si>
+
+ PR target/24315
+ * gcc.dg/pr24315.c: New test.
+
+2005-11-10 Uros Bizjak <uros@kss-loka.si>
+
+ PR target/19340
+ * gcc.dg/pr19340.c: New test.
+
2005-11-09 Uros Bizjak <uros@kss-loka.si>
PR c/24101
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-O1 -fschedule-insns2 -fsched2-use-traces" } */
+
+extern double f (double x);
+
+double g (int a)
+{
+ int b, c, d, e = 0;
+ double h;
+
+ for (d = 0; d < a; d++)
+ for (c = 0; c < a; c++)
+ b = 1;
+
+ h = (double) e / (double) a;
+
+ if (h)
+ {
+ h = 1.0 / h;
+ h = f (h);
+ }
+ else
+ h = 1.0;
+
+ return h;
+}
--- /dev/null
+/* PR target/24315 */
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-O0 -fpeephole2" } */
+
+void s48_double_to_bignum (int exponent)
+{
+ long length = ((((exponent) + ((((sizeof (long)) * 8) - 2) - 1)) /
+ (((sizeof (long)) * 8) - 2)));
+}