OSDN Git Service

* optabs.c (expand_sync_operation): Use plus insn if minus
authordaney <daney@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 10 Sep 2007 03:18:30 +0000 (03:18 +0000)
committerdaney <daney@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 10 Sep 2007 03:18:30 +0000 (03:18 +0000)
CONST_INT_P(val).
(expand_sync_fetch_operation):  Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128322 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/optabs.c

index 8962b81..0a493c1 100644 (file)
@@ -1,3 +1,9 @@
+2007-09-09  David Daney  <ddaney@avtrex.com>
+
+       * optabs.c (expand_sync_operation):  Use plus insn if minus
+       CONST_INT_P(val).
+       (expand_sync_fetch_operation):  Ditto.
+
 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
 
        * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
index e8ac1d7..7f2b564 100644 (file)
@@ -7242,7 +7242,7 @@ expand_sync_operation (rtx mem, rtx val, enum rtx_code code)
 
     case MINUS:
       icode = sync_sub_optab[mode];
-      if (icode == CODE_FOR_nothing)
+      if (icode == CODE_FOR_nothing || CONST_INT_P (val))
        {
          icode = sync_add_optab[mode];
          if (icode != CODE_FOR_nothing)
@@ -7342,7 +7342,8 @@ expand_sync_fetch_operation (rtx mem, rtx val, enum rtx_code code,
     case MINUS:
       old_code = sync_old_sub_optab[mode];
       new_code = sync_new_sub_optab[mode];
-      if (old_code == CODE_FOR_nothing && new_code == CODE_FOR_nothing)
+      if ((old_code == CODE_FOR_nothing && new_code == CODE_FOR_nothing)
+          || CONST_INT_P (val))
        {
          old_code = sync_old_add_optab[mode];
          new_code = sync_new_add_optab[mode];