]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ia64.c (ia64_load_pair_ok): Return 0 if the second member of the destination isn...
authorEric Botcazou <ebotcazou@adacore.com>
Fri, 6 Apr 2012 06:44:18 +0000 (06:44 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Fri, 6 Apr 2012 06:44:18 +0000 (06:44 +0000)
* config/ia64/ia64.c (ia64_load_pair_ok): Return 0 if the second member
of the destination isn't also a FP_REGS register.

From-SVN: r186177

gcc/ChangeLog
gcc/config/ia64/ia64.c

index 8118ed59ad7b039a55163966694be261cb804ca1..178238d1ab766c8d9235589de8af032a20fdd938 100644 (file)
@@ -1,3 +1,8 @@
+2012-04-06  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * config/ia64/ia64.c (ia64_load_pair_ok): Return 0 if the second member
+       of the destination isn't also a FP_REGS register.
+
 2012-04-05  Teresa Johnson  <tejohnson@google.com>
            H.J. Lu  <hongjiu.lu@intel.com>
 
index 4b8a6929b1edcd4f52121e501707695f4b203e3c..c659506460650371d968aa12a9595869c68a32eb 100644 (file)
@@ -857,7 +857,11 @@ ia64_move_ok (rtx dst, rtx src)
 int
 ia64_load_pair_ok (rtx dst, rtx src)
 {
-  if (GET_CODE (dst) != REG || !FP_REGNO_P (REGNO (dst)))
+  /* ??? There is a thinko in the implementation of the "x" constraint and the
+     FP_REGS class.  The constraint will also reject (reg f30:TI) so we must
+     also return false for it.  */
+  if (GET_CODE (dst) != REG
+      || !(FP_REGNO_P (REGNO (dst)) && FP_REGNO_P (REGNO (dst) + 1)))
     return 0;
   if (GET_CODE (src) != MEM || MEM_VOLATILE_P (src))
     return 0;