predicates.md (splat_input_operand): Don't call input_operand for MEMs.
authorAlan Modra <amodra@gmail.com>
Thu, 18 Oct 2012 22:33:15 +0000 (09:03 +1030)
committerAlan Modra <amodra@gcc.gnu.org>
Thu, 18 Oct 2012 22:33:15 +0000 (09:03 +1030)
* config/rs6000/predicates.md (splat_input_operand): Don't call
input_operand for MEMs.  Instead check for volatile and call
memory_address_addr_space_p with modified mode.

From-SVN: r192590

gcc/ChangeLog
gcc/config/rs6000/predicates.md

index 86c3f2fff0c8a904ae23dfd63e6dc911cad9d52e..fb9c4e866630043fecb0c3b27b167d35f75511bf 100644 (file)
@@ -1,3 +1,9 @@
+2012-10-19  Alan Modra  <amodra@gmail.com>
+
+       * config/rs6000/predicates.md (splat_input_operand): Don't call
+       input_operand for MEMs.  Instead check for volatile and call
+       memory_address_addr_space_p with modified mode.
+
 2012-10-18  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.md (rdpmc): Remove expander.
index 99130ba6eef40c58aa72231b129322146715ac55..fc20a5e5761520abb9da4a3ac620588fd03c0e78 100644 (file)
 {
   if (MEM_P (op))
     {
+      if (! volatile_ok && MEM_VOLATILE_P (op))
+       return 0;
       if (mode == DFmode)
        mode = V2DFmode;
       else if (mode == DImode)
        mode = V2DImode;
       else
-       gcc_unreachable ();        
+       gcc_unreachable ();
+      return memory_address_addr_space_p (mode, XEXP (op, 0),
+                                         MEM_ADDR_SPACE (op));
     }
   return input_operand (op, mode);
 })