+2008-09-19 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline:
+ 2008-09-18 Uros Bizjak <ubizjak@gmail.com>
+
+ PR rtl-optimization/37544
+ * regrename.c (maybe_mode_change): Exit early when copy_mode
+ is narrower than orig_mode and narrower than new_mode.
+
2008-08-29 Uros Bizjak <ubizjak@gmail.com>
Backport from mainline:
enum machine_mode new_mode, unsigned int regno,
unsigned int copy_regno ATTRIBUTE_UNUSED)
{
+ if (GET_MODE_SIZE (copy_mode) < GET_MODE_SIZE (orig_mode)
+ && GET_MODE_SIZE (copy_mode) < GET_MODE_SIZE (new_mode))
+ return NULL_RTX;
+
if (orig_mode == new_mode)
return gen_rtx_raw_REG (new_mode, regno);
else if (mode_change_ok (orig_mode, new_mode, regno))
+2008-09-19 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline:
+ 2008-09-18 Uros Bizjak <ubizjak@gmail.com>
+
+ PR rtl-optimization/37544
+ * gcc.dg/pr37544.c: New test.
+
2008-08-29 Uros Bizjak <ubizjak@gmail.com>
Backport from mainline:
--- /dev/null
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+/* { dg-options "-O2 -msse2 -mtune=nocona -mfpmath=387" { target { i?86-*-* x86_64-*-* } } } */
+
+#ifdef __i386__
+#include "i386-cpuid.h"
+#endif
+
+extern void abort (void);
+
+int main(void)
+{
+ double arr[1000];
+ double a, b;
+
+ int i;
+
+#ifdef __i386__
+ unsigned long cpu_facilities;
+
+ cpu_facilities = i386_cpuid_edx ();
+
+ /* Run SSE2 test only if host has SSE2 support. */
+ if (!(cpu_facilities & bit_SSE2))
+ return 0;
+#endif
+
+ for (i = 0; i < 1000; i++)
+ arr[i] = 4294967296.0 + (double)i;
+
+ a = arr[0];
+ b = (unsigned int)((unsigned long long int)a % 4294967296ULL);
+
+ if (b >= 4294967296.0)
+ abort ();
+
+ return 0;
+}