OSDN Git Service

PR target/52107
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 6 Feb 2012 22:09:13 +0000 (22:09 +0000)
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 6 Feb 2012 22:09:13 +0000 (22:09 +0000)
* config/rs6000/rs6000.c (rs6000_emit_move): Don't create DImode
subregs of TFmode.

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

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

index 9bacd9d..3307d71 100644 (file)
@@ -1,3 +1,9 @@
+2012-02-07  Alan Modra  <amodra@gmail.com>
+
+       PR target/52107
+       * config/rs6000/rs6000.c (rs6000_emit_move): Don't create DImode
+       subregs of TFmode.
+
 2012-02-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
        PR tree-optimization/50969
index 4190b25..39c0714 100644 (file)
@@ -7010,17 +7010,14 @@ rs6000_emit_move (rtx dest, rtx source, enum machine_mode mode)
   if (!TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128
       && mode == TFmode && GET_CODE (operands[1]) == CONST_DOUBLE)
     {
-      /* DImode is used, not DFmode, because simplify_gen_subreg doesn't
-        know how to get a DFmode SUBREG of a TFmode.  */
-      enum machine_mode imode = (TARGET_E500_DOUBLE ? DFmode : DImode);
-      rs6000_emit_move (simplify_gen_subreg (imode, operands[0], mode, 0),
-                       simplify_gen_subreg (imode, operands[1], mode, 0),
-                       imode);
-      rs6000_emit_move (simplify_gen_subreg (imode, operands[0], mode,
-                                            GET_MODE_SIZE (imode)),
-                       simplify_gen_subreg (imode, operands[1], mode,
-                                            GET_MODE_SIZE (imode)),
-                       imode);
+      rs6000_emit_move (simplify_gen_subreg (DFmode, operands[0], mode, 0),
+                       simplify_gen_subreg (DFmode, operands[1], mode, 0),
+                       DFmode);
+      rs6000_emit_move (simplify_gen_subreg (DFmode, operands[0], mode,
+                                            GET_MODE_SIZE (DFmode)),
+                       simplify_gen_subreg (DFmode, operands[1], mode,
+                                            GET_MODE_SIZE (DFmode)),
+                       DFmode);
       return;
     }