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
This commit is contained in:
Geoff Keating 2000-05-14 21:40:33 +00:00 committed by Geoffrey Keating
parent 94a54f47cf
commit f176e826a0
4 changed files with 21 additions and 17 deletions

View 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

View 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))
{

View 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

View File

@ -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"