Correct test of 'remainder' and 'subtargets'.
authorNick Clifton <nickc@cambridge.redhat.com>
Fri, 11 Jan 2002 16:15:36 +0000 (16:15 +0000)
committerNick Clifton <nickc@gcc.gnu.org>
Fri, 11 Jan 2002 16:15:36 +0000 (16:15 +0000)
From-SVN: r48776

gcc/ChangeLog
gcc/config/arm/arm.c

index 6e68eab56812fe688abd469d91bf1b0aa9bf4caf..bad4bcb3bd8d50854dc7fe5d88d6c63d919e4876 100644 (file)
@@ -1,3 +1,8 @@
+2002-01-11  Nick Clifton  <nickc@cambridge.redhat.com>
+
+       * config/arm/arm.c (arm_gen_constant): Correct test of 'remainder'
+       and 'subtargets'.
+
 2002-01-11  Andreas Jaeger  <aj@suse.de>,
            Brad Lucier <lucier@math.purdue.edu>
 
index 76ce21c6b5aaad3d37f7727c18b6deae1a5b51a7..7cad98b07e6962a956be66ab05c0568f443c29ea 100644 (file)
@@ -1631,15 +1631,15 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate)
                if (code == SET || code == MINUS)
                  {
                    new_src = (subtargets ? gen_reg_rtx (mode) : target);
-                   if (can_invert)
+                   if (can_invert && code != MINUS)
                      temp1 = ~temp1;
                  }
                else
                  {
-                   if (remainder || !subtargets)
-                     new_src = target;
-                   else
+                   if (remainder && subtargets)
                      new_src = gen_reg_rtx (mode);
+                   else
+                     new_src = target;
                    if (can_invert)
                      temp1 = ~temp1;
                    else if (can_negate)