OSDN Git Service

gcc/
authorbergner <bergner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 18 Mar 2010 03:10:04 +0000 (03:10 +0000)
committerMasaki Muranaka <monaka@monami-software.com>
Sun, 23 May 2010 05:13:13 +0000 (14:13 +0900)
PR target/42427
* config/rs6000/rs6000.c (rs6000_split_multireg_move): Add support for
non-offsettable and pre_modify update addressing.
* config/rs6000/dfp.md (*movdd_hardfloat32): Make the "0", "1"
and "2" alternatives "#".
(*movdd_softfloat32): Make all alternatives "#";
* config/rs6000/rs6000.md (DIFD): New define_mode_iterator.
(*movdf_hardfloat32): Make the "0", "1" and "2" alternatives "#".
(*movdf_softfloat32): Make all alternatives "#";
(movdi): Use the new DIFD mode iterator to create a common splitter
for movdi, movdf and movdd patterns.

gcc/testsuite/
PR target/42427
* gcc.dg/pr42427.c: New test.

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

gcc/ChangeLog
gcc/config/rs6000/rs6000.c
gcc/testsuite/ChangeLog

index 8ffd67a..5b39ca2 100644 (file)
@@ -1,3 +1,17 @@
+2010-03-17  Peter Bergner  <bergner@vnet.ibm.com>
+
+       PR target/42427
+       * config/rs6000/rs6000.c (rs6000_split_multireg_move): Add support for
+       non-offsettable and pre_modify update addressing.
+       * config/rs6000/dfp.md (*movdd_hardfloat32): Make the "0", "1"
+       and "2" alternatives "#".
+       (*movdd_softfloat32): Make all alternatives "#";
+       * config/rs6000/rs6000.md (DIFD): New define_mode_iterator.
+       (*movdf_hardfloat32): Make the "0", "1" and "2" alternatives "#".
+       (*movdf_softfloat32): Make all alternatives "#";
+       (movdi): Use the new DIFD mode iterator to create a common splitter
+       for movdi, movdf and movdd patterns.
+
 2010-03-18  Shujing Zhao  <pearly.zhao@oracle.com>
 
        * common.opt (dumpdir): Remove redundant tab.
index 61140a2..ee67275 100644 (file)
@@ -16837,16 +16837,6 @@ rs6000_split_multireg_move (rtx dst, rtx src)
                {
                  rtx basereg = XEXP (XEXP (dst, 0), 0);
                  rtx offsetreg = XEXP (XEXP (dst, 0), 1);
-                 gcc_assert (GET_CODE (XEXP (dst, 0)) == PLUS
-                             && REG_P (basereg)
-                             && REG_P (offsetreg)
-                             && REGNO (basereg) != REGNO (offsetreg));
-                 if (REGNO (basereg) == 0)
-                   {
-                     rtx tmp = offsetreg;
-                     offsetreg = basereg;
-                     basereg = tmp;
-                   }
                  emit_insn (gen_add3_insn (basereg, basereg, offsetreg));
                  restore_basereg = gen_sub3_insn (basereg, basereg, offsetreg);
                  dst = replace_equiv_address (dst, basereg);
index 78eaaf0..fd749fe 100644 (file)
@@ -1,3 +1,8 @@
+2010-03-17  Peter Bergner  <bergner@vnet.ibm.com>
+
+       PR target/42427
+       * gcc.dg/pr42427.c: New test.
+
 2010-03-17  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR libfortran/43265