rs6000.md (movsi): Don't modify RTL in-place.
authorGeoff Keating <geoffk@cygnus.com>
Sun, 14 May 2000 21:40:33 +0000 (21:40 +0000)
committerGeoffrey Keating <geoffk@gcc.gnu.org>
Sun, 14 May 2000 21:40:33 +0000 (21:40 +0000)
* config/rs6000/rs6000.md (movsi): Don't modify RTL in-place.
(movdi): Make similar to movsi.
* config/rs6000/rs6000.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): There
is no such thing as a DImode CONST_DOUBLE.
* config/rs6000/rs6000.c (output_toc): Likewise.

From-SVN: r33898

gcc/ChangeLog
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.h
gcc/config/rs6000/rs6000.md

index b909d3ec72172ea4fbf4ba5aec640121cec75ac0..99793e2fe61533281ddc9aaeff69445253d4422c 100644 (file)
@@ -1,7 +1,13 @@
 2000-05-14  Geoffrey Keating  <geoffk@cygnus.com>
 
-       * rs6000.c (output_cbranch): Don't output prediction codes
-       when old mnemonics are in use.  Print register names
+       * config/rs6000/rs6000.md (movsi): Don't modify RTL in-place.
+       (movdi): Make similar to movsi.
+       * config/rs6000/rs6000.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): There
+       is no such thing as a DImode CONST_DOUBLE.
+       * config/rs6000/rs6000.c (output_toc): Likewise.
+       
+       * config/rs6000/rs6000.c (output_cbranch): Don't output prediction
+       codes when old mnemonics are in use.  Print register names
        for cc registers when requested.
 
        * optabs.c (expand_float): Don't allow mode widening that causes
index 104cc8d9dfa1350f789a746e384e036193701d5c..7a8f1b74e7debdecd656ee2d17ac8a14a8717280 100644 (file)
@@ -6228,7 +6228,7 @@ output_toc (file, x, labelno)
          return;
        }
     }
-  else if (GET_MODE (x) == DImode
+  else if (GET_MODE (x) == VOIDmode
           && (GET_CODE (x) == CONST_INT || GET_CODE (x) == CONST_DOUBLE)
           && ! (TARGET_NO_FP_IN_TOC && ! TARGET_MINIMAL_TOC))
     {
index b0dcbf42ff926f1c41010c9f3d80528833bcc690..9959ab503d0a49373119b334d5ebd113ceae34ff 100644 (file)
@@ -2355,7 +2355,7 @@ extern int toc_initialized;
        || (! (TARGET_NO_FP_IN_TOC && ! TARGET_MINIMAL_TOC)             \
           && GET_CODE (X) == CONST_DOUBLE                              \
           && (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT              \
-              || (TARGET_POWERPC64 && GET_MODE (X) == DImode)))))
+              || TARGET_POWERPC64))))
 #if 0
           && BITS_PER_WORD == HOST_BITS_PER_INT)))
 #endif
index 66a23508cf7294b60ac347caa5c7bcad61afca80..1f54ec1358a63c92adc7c07b5de48197901c57cf 100644 (file)
          && ASM_OUTPUT_SPECIAL_POOL_ENTRY_P (get_pool_constant (
                XEXP (operands[1], 0))))
        {
-         XEXP (operands[1], 0) = create_TOC_reference (XEXP (operands[1], 0));
+         operands[1] = gen_rtx_MEM (SImode,
+                            create_TOC_reference (XEXP (operands[1], 0)));
          MEM_ALIAS_SET (operands[1]) = get_TOC_alias_set ();   
          RTX_UNCHANGING_P (operands[1]) = 1;
        }
        }
 
       operands[1] = force_const_mem (DImode, operands[1]);
-      if (TARGET_TOC && CONSTANT_POOL_EXPR_P (XEXP (operands[1], 0)))
+
+      if (TARGET_TOC 
+         && CONSTANT_POOL_EXPR_P (XEXP (operands[1], 0))
+         && ASM_OUTPUT_SPECIAL_POOL_ENTRY_P (get_pool_constant (
+               XEXP (operands[1], 0))))
        {
-         XEXP (operands[1], 0) = create_TOC_reference (XEXP (operands[1], 0));
+         operands[1] = gen_rtx_MEM (DImode,
+                            create_TOC_reference (XEXP (operands[1], 0)));
+
          MEM_ALIAS_SET (operands[1]) = get_TOC_alias_set ();   
          RTX_UNCHANGING_P (operands[1]) = 1;
        }       
+
       if (! memory_address_p (DImode, XEXP (operands[1], 0))
          && ! reload_in_progress)
        operands[1] = change_address (operands[1], DImode,
                                      XEXP (operands[1], 0));
     }
-
-  if (TARGET_TOC 
-     && GET_CODE (operands[1]) == MEM 
-     && GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF)
-    {
-      XEXP (operands[1], 0) = create_TOC_reference (XEXP (operands[1], 0));
-      MEM_ALIAS_SET (operands[1]) = get_TOC_alias_set ();      
-      RTX_UNCHANGING_P (operands[1]) = 1;
-    }
-
 }")
 
 (define_insn "*movdi_32"