Commit 4c9d416e by Alan Modra Committed by Alan Modra

invoke.texi: Delete mcmodel=medium from powerpc options.

	* doc/invoke.texi: Delete mcmodel=medium from powerpc options.
	* config/rs6000/rs6000.h (enum rs6000_cmodel): Delete CMODEL_MEDIUM.
	* config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
	CMODEL_LARGE as default.
	* config/rs6000/rs6000.c (rs6000_handle_option): Remove mcmodel=medium.
	(offsettable_ok_by_alignment): Delete.
	(rs6000_emit_move): Remove mcmodel=medium optimization.

From-SVN: r161371
parent 0b032f38
2010-06-25 Alan Modra <amodra@gmail.com>
* doc/invoke.texi: Delete mcmodel=medium from powerpc options.
* config/rs6000/rs6000.h (enum rs6000_cmodel): Delete CMODEL_MEDIUM.
* config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
CMODEL_LARGE as default.
* config/rs6000/rs6000.c (rs6000_handle_option): Remove mcmodel=medium.
(offsettable_ok_by_alignment): Delete.
(rs6000_emit_move): Remove mcmodel=medium optimization.
2010-06-25 Bernd Schmidt <bernds@codesourcery.com> 2010-06-25 Bernd Schmidt <bernds@codesourcery.com>
With large parts from Jim Wilson: With large parts from Jim Wilson:
......
...@@ -134,7 +134,7 @@ extern enum rs6000_cmodel cmodel; ...@@ -134,7 +134,7 @@ extern enum rs6000_cmodel cmodel;
else \ else \
{ \ { \
if (!rs6000_explicit_options.cmodel) \ if (!rs6000_explicit_options.cmodel) \
SET_CMODEL (CMODEL_MEDIUM); \ SET_CMODEL (CMODEL_LARGE); \
if (cmodel != CMODEL_SMALL) \ if (cmodel != CMODEL_SMALL) \
{ \ { \
TARGET_NO_FP_IN_TOC = 0; \ TARGET_NO_FP_IN_TOC = 0; \
......
...@@ -3653,8 +3653,6 @@ rs6000_handle_option (size_t code, const char *arg, int value) ...@@ -3653,8 +3653,6 @@ rs6000_handle_option (size_t code, const char *arg, int value)
case OPT_mcmodel_: case OPT_mcmodel_:
if (strcmp (arg, "small") == 0) if (strcmp (arg, "small") == 0)
cmodel = CMODEL_SMALL; cmodel = CMODEL_SMALL;
else if (strcmp (arg, "medium") == 0)
cmodel = CMODEL_MEDIUM;
else if (strcmp (arg, "large") == 0) else if (strcmp (arg, "large") == 0)
cmodel = CMODEL_LARGE; cmodel = CMODEL_LARGE;
else else
...@@ -6636,36 +6634,6 @@ rs6000_eliminate_indexed_memrefs (rtx operands[2]) ...@@ -6636,36 +6634,6 @@ rs6000_eliminate_indexed_memrefs (rtx operands[2])
copy_addr_to_reg (XEXP (operands[1], 0))); copy_addr_to_reg (XEXP (operands[1], 0)));
} }
/* Return true if memory accesses to DECL are known to never straddle
a 32k boundary. */
static bool
offsettable_ok_by_alignment (tree decl)
{
unsigned HOST_WIDE_INT dsize;
/* Presume any compiler generated symbol_ref is suitably aligned. */
if (!decl)
return true;
if (TREE_CODE (decl) != VAR_DECL
&& TREE_CODE (decl) != PARM_DECL
&& TREE_CODE (decl) != RESULT_DECL
&& TREE_CODE (decl) != FIELD_DECL)
return true;
if (!host_integerp (DECL_SIZE_UNIT (decl), 1))
return false;
dsize = tree_low_cst (DECL_SIZE_UNIT (decl), 1);
if (dsize <= 1)
return true;
if (dsize > 32768)
return false;
return DECL_ALIGN_UNIT (decl) >= dsize;
}
/* Emit a move from SOURCE to DEST in mode MODE. */ /* Emit a move from SOURCE to DEST in mode MODE. */
void void
rs6000_emit_move (rtx dest, rtx source, enum machine_mode mode) rs6000_emit_move (rtx dest, rtx source, enum machine_mode mode)
...@@ -6979,16 +6947,11 @@ rs6000_emit_move (rtx dest, rtx source, enum machine_mode mode) ...@@ -6979,16 +6947,11 @@ rs6000_emit_move (rtx dest, rtx source, enum machine_mode mode)
/* If this is a SYMBOL_REF that refers to a constant pool entry, /* If this is a SYMBOL_REF that refers to a constant pool entry,
and we have put it in the TOC, we just need to make a TOC-relative and we have put it in the TOC, we just need to make a TOC-relative
reference to it. */ reference to it. */
if ((TARGET_TOC if (TARGET_TOC
&& GET_CODE (operands[1]) == SYMBOL_REF && GET_CODE (operands[1]) == SYMBOL_REF
&& constant_pool_expr_p (operands[1]) && constant_pool_expr_p (operands[1])
&& ASM_OUTPUT_SPECIAL_POOL_ENTRY_P (get_pool_constant (operands[1]), && ASM_OUTPUT_SPECIAL_POOL_ENTRY_P (get_pool_constant (operands[1]),
get_pool_mode (operands[1]))) get_pool_mode (operands[1])))
|| (TARGET_CMODEL == CMODEL_MEDIUM
&& GET_CODE (operands[1]) == SYMBOL_REF
&& !CONSTANT_POOL_ADDRESS_P (operands[1])
&& SYMBOL_REF_LOCAL_P (operands[1])
&& offsettable_ok_by_alignment (SYMBOL_REF_DECL (operands[1]))))
{ {
rtx reg = NULL_RTX; rtx reg = NULL_RTX;
if (TARGET_CMODEL != CMODEL_SMALL) if (TARGET_CMODEL != CMODEL_SMALL)
......
...@@ -295,11 +295,9 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); ...@@ -295,11 +295,9 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
/* Code model for 64-bit linux. /* Code model for 64-bit linux.
small: 16-bit toc offsets. small: 16-bit toc offsets.
medium: 32-bit toc offsets, static data and code within 2G of TOC pointer. large: 32-bit toc offsets. */
large: 32-bit toc offsets, no limit on static data and code. */
enum rs6000_cmodel { enum rs6000_cmodel {
CMODEL_SMALL, CMODEL_SMALL,
CMODEL_MEDIUM,
CMODEL_LARGE CMODEL_LARGE
}; };
......
...@@ -14987,11 +14987,6 @@ scheduling parameters set by @option{-mtune}. ...@@ -14987,11 +14987,6 @@ scheduling parameters set by @option{-mtune}.
Generate PowerPC64 code for the small model: The TOC is limited to Generate PowerPC64 code for the small model: The TOC is limited to
64k. 64k.
@item -mcmodel=medium
@opindex mcmodel=medium
Generate PowerPC64 code for the medium model: The TOC and other static
data may be up to a total of 4G in size.
@item -mcmodel=large @item -mcmodel=large
@opindex mcmodel=large @opindex mcmodel=large
Generate PowerPC64 code for the large model: The TOC may be up to 4G Generate PowerPC64 code for the large model: The TOC may be up to 4G
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment