]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR rtl-optimization/19800 (mmix-knuth-mmixware broken, building newlib/libm/common...
authorRoger Sayle <roger@eyesopen.com>
Mon, 7 Feb 2005 05:39:05 +0000 (05:39 +0000)
committerRoger Sayle <sayle@gcc.gnu.org>
Mon, 7 Feb 2005 05:39:05 +0000 (05:39 +0000)
PR rtl-optimization/19800
* simplify_rtx.c (simplify_relational_operaration_1): Explicitly
call gen_lowpart_common and gen_lowpart_SUBREG instead of calling
gen_lowpart.

From-SVN: r94691

gcc/ChangeLog
gcc/simplify-rtx.c

index 48af6289e24660ead5298db7cc485c69e87f566d..9064d84b8033bf8d8b10de35606637465e42546a 100644 (file)
@@ -1,3 +1,10 @@
+2005-02-06  Roger Sayle  <roger@eyesopen.com>
+
+       PR rtl-optimization/19800
+       * simplify_rtx.c (simplify_relational_operaration_1): Explicitly
+       call gen_lowpart_common and gen_lowpart_SUBREG instead of calling
+       gen_lowpart.
+
 2005-02-07  Ralf Corsepius  <ralf.corsepius@rtems.org>
 
        * config/m68k/t-rtems (MULTILIB_MATCHES): Let m528x match m5200.
index f23dba7c63cc6b4c127f8518148275a40d821ea8..a92fc3c71c675f3889955add7f1e625962248e98 100644 (file)
@@ -2888,9 +2888,17 @@ simplify_relational_operation_1 (enum rtx_code code, enum machine_mode mode,
       && cmp_mode != VOIDmode
       && nonzero_bits (op0, cmp_mode) == 1
       && STORE_FLAG_VALUE == 1)
-    return GET_MODE_SIZE (mode) > GET_MODE_SIZE (cmp_mode)
-          ? simplify_gen_unary (ZERO_EXTEND, mode, op0, cmp_mode)
-          : gen_lowpart (mode, op0);
+    {
+      rtx tmp;
+      if (GET_MODE_SIZE (mode) > GET_MODE_SIZE (cmp_mode))
+       return simplify_gen_unary (ZERO_EXTEND, mode, op0, cmp_mode);
+      tmp = gen_lowpart_common (mode, op0);
+      if (tmp)
+       return tmp;
+      if (GET_MODE (op0) != mode)
+       return gen_lowpart_SUBREG (mode, op0);
+      return op0;
+    }
 
   return NULL_RTX;
 }