Commit a277ca89 by Alan Modra Committed by Alan Modra

[RS6000] Don't put large integer constants in TOC for -mcmodel=medium

For -mcmodel=medium we can use toc-relative addressing to access
constants placed in read-only data, which is better since they can be
merged when in .rodata.cst8.

	* config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Exclude
	integer constants when -mcmodel=medium.

From-SVN: r266069
parent 9de6af45
2018-11-13 Alan Modra <amodra@gmail.com>
* config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Exclude
integer constants when -mcmodel=medium.
2018-11-13 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc.h (FUNCTION_PROFILER): Redefine to empty.
......@@ -582,8 +582,10 @@ extern int dot_symbols;
we also do this for floating-point constants. We actually can only
do this if the FP formats of the target and host machines are the
same, but we can't check that since not every file that uses
the macros includes real.h. We also do this when we can write the
entry into the TOC and the entry is not larger than a TOC entry. */
the macros includes real.h. We also do this when we can write an
integer into the TOC and the entry is not larger than a TOC entry,
but not for -mcmodel=medium where we'll use a toc-relative load for
constants outside the TOC. */
#undef ASM_OUTPUT_SPECIAL_POOL_ENTRY_P
#define ASM_OUTPUT_SPECIAL_POOL_ENTRY_P(X, MODE) \
......@@ -593,6 +595,7 @@ extern int dot_symbols;
&& GET_CODE (XEXP (XEXP (X, 0), 0)) == SYMBOL_REF) \
|| GET_CODE (X) == LABEL_REF \
|| (GET_CODE (X) == CONST_INT \
&& TARGET_CMODEL != CMODEL_MEDIUM \
&& GET_MODE_BITSIZE (MODE) <= GET_MODE_BITSIZE (Pmode)) \
|| (GET_CODE (X) == CONST_DOUBLE \
&& ((TARGET_64BIT \
......
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