diff options
author | Geoff Keating <geoffk@cygnus.com> | 2000-05-14 21:40:33 +0000 |
---|---|---|
committer | Geoffrey Keating <geoffk@gcc.gnu.org> | 2000-05-14 21:40:33 +0000 |
commit | f176e826a0833cf5b4cc81430cdda9b980aae9de (patch) | |
tree | f48e6286d3899788ad4546fa1f5e0d14746b64ad /gcc | |
parent | 94a54f47cfdfc0ed8d8a4c598e3018fd5e5eabca (diff) | |
download | gcc-f176e826a0833cf5b4cc81430cdda9b980aae9de.zip gcc-f176e826a0833cf5b4cc81430cdda9b980aae9de.tar.gz gcc-f176e826a0833cf5b4cc81430cdda9b980aae9de.tar.bz2 |
rs6000.md (movsi): Don't modify RTL in-place.
* 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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 2 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.h | 2 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.md | 24 |
4 files changed, 21 insertions, 17 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b909d3e..99793e2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 104cc8d..7a8f1b7 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -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)) { diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index b0dcbf4..9959ab5 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -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 diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 66a2350..1f54ec1 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -8087,7 +8087,8 @@ && 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; } @@ -8709,27 +8710,24 @@ } 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" |