alpha.c (alpha_write_verstamp): Mark `file' unused.
* alpha.c (alpha_write_verstamp): Mark `file' unused. * alpha.h (FUNCTION_VALUE): Use gen_rtx_REG not gen_rtx. (LIBCALL_VALUE): Likewise. (GO_IF_LEGITIMATE_SIMPLE_ADDRESS): Handle normal subregs. From-SVN: r26607
This commit is contained in:
parent
4cb02ea162
commit
4c020733f4
@ -1,3 +1,10 @@
|
||||
Fri Apr 23 16:57:40 1999 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
* alpha.c (alpha_write_verstamp): Mark `file' unused.
|
||||
* alpha.h (FUNCTION_VALUE): Use gen_rtx_REG not gen_rtx.
|
||||
(LIBCALL_VALUE): Likewise.
|
||||
(GO_IF_LEGITIMATE_SIMPLE_ADDRESS): Handle normal subregs.
|
||||
|
||||
Fri Apr 23 14:57:33 1999 Donn Terry <donn@interix.com>
|
||||
|
||||
* alpha32.h (INITIALIZE_TRAMPOLINE): Get offsets right.
|
||||
|
@ -3297,7 +3297,7 @@ alpha_does_function_need_gp ()
|
||||
|
||||
void
|
||||
alpha_write_verstamp (file)
|
||||
FILE *file;
|
||||
FILE *file ATTRIBUTE_UNUSED;
|
||||
{
|
||||
#ifdef MS_STAMP
|
||||
fprintf (file, "\t.verstamp %d %d\n", MS_STAMP, LS_STAMP);
|
||||
|
@ -1002,26 +1002,25 @@ extern int alpha_memory_latency;
|
||||
On Alpha the value is found in $0 for integer functions and
|
||||
$f0 for floating-point functions. */
|
||||
|
||||
#define FUNCTION_VALUE(VALTYPE, FUNC) \
|
||||
gen_rtx (REG, \
|
||||
((INTEGRAL_TYPE_P (VALTYPE) \
|
||||
&& TYPE_PRECISION (VALTYPE) < BITS_PER_WORD) \
|
||||
|| POINTER_TYPE_P (VALTYPE)) \
|
||||
? word_mode : TYPE_MODE (VALTYPE), \
|
||||
((TARGET_FPREGS \
|
||||
&& (TREE_CODE (VALTYPE) == REAL_TYPE \
|
||||
|| TREE_CODE (VALTYPE) == COMPLEX_TYPE)) \
|
||||
? 32 : 0))
|
||||
#define FUNCTION_VALUE(VALTYPE, FUNC) \
|
||||
gen_rtx_REG (((INTEGRAL_TYPE_P (VALTYPE) \
|
||||
&& TYPE_PRECISION (VALTYPE) < BITS_PER_WORD) \
|
||||
|| POINTER_TYPE_P (VALTYPE)) \
|
||||
? word_mode : TYPE_MODE (VALTYPE), \
|
||||
((TARGET_FPREGS \
|
||||
&& (TREE_CODE (VALTYPE) == REAL_TYPE \
|
||||
|| TREE_CODE (VALTYPE) == COMPLEX_TYPE)) \
|
||||
? 32 : 0))
|
||||
|
||||
/* Define how to find the value returned by a library function
|
||||
assuming the value has mode MODE. */
|
||||
|
||||
#define LIBCALL_VALUE(MODE) \
|
||||
gen_rtx (REG, MODE, \
|
||||
(TARGET_FPREGS \
|
||||
&& (GET_MODE_CLASS (MODE) == MODE_FLOAT \
|
||||
|| GET_MODE_CLASS (MODE) == MODE_COMPLEX_FLOAT) \
|
||||
? 32 : 0))
|
||||
#define LIBCALL_VALUE(MODE) \
|
||||
gen_rtx_REG (MODE, \
|
||||
(TARGET_FPREGS \
|
||||
&& (GET_MODE_CLASS (MODE) == MODE_FLOAT \
|
||||
|| GET_MODE_CLASS (MODE) == MODE_COMPLEX_FLOAT) \
|
||||
? 32 : 0))
|
||||
|
||||
/* The definition of this macro implies that there are cases where
|
||||
a scalar value cannot be returned in registers.
|
||||
@ -1426,21 +1425,34 @@ extern void alpha_init_expanders ();
|
||||
|
||||
First define the basic valid address. */
|
||||
|
||||
#define GO_IF_LEGITIMATE_SIMPLE_ADDRESS(MODE, X, ADDR) \
|
||||
{ if (REG_P (X) && REG_OK_FOR_BASE_P (X)) \
|
||||
goto ADDR; \
|
||||
if (CONSTANT_ADDRESS_P (X)) \
|
||||
goto ADDR; \
|
||||
if (GET_CODE (X) == PLUS \
|
||||
&& REG_P (XEXP (X, 0))) \
|
||||
{ \
|
||||
if (REG_OK_FP_BASE_P (XEXP (X, 0)) \
|
||||
&& GET_CODE (XEXP (X, 1)) == CONST_INT) \
|
||||
goto ADDR; \
|
||||
if (REG_OK_FOR_BASE_P (XEXP (X, 0)) \
|
||||
&& CONSTANT_ADDRESS_P (XEXP (X, 1))) \
|
||||
goto ADDR; \
|
||||
} \
|
||||
#define GO_IF_LEGITIMATE_SIMPLE_ADDRESS(MODE, X, ADDR) \
|
||||
{ \
|
||||
rtx tmp = (X); \
|
||||
if (GET_CODE (tmp) == SUBREG \
|
||||
&& (GET_MODE_SIZE (GET_MODE (tmp)) \
|
||||
< GET_MODE_SIZE (GET_MODE (SUBREG_REG (tmp))))) \
|
||||
tmp = SUBREG_REG (tmp); \
|
||||
if (REG_P (tmp) && REG_OK_FOR_BASE_P (tmp)) \
|
||||
goto ADDR; \
|
||||
if (CONSTANT_ADDRESS_P (X)) \
|
||||
goto ADDR; \
|
||||
if (GET_CODE (X) == PLUS) \
|
||||
{ \
|
||||
tmp = XEXP (X, 0); \
|
||||
if (GET_CODE (tmp) == SUBREG \
|
||||
&& (GET_MODE_SIZE (GET_MODE (tmp)) \
|
||||
< GET_MODE_SIZE (GET_MODE (SUBREG_REG (tmp))))) \
|
||||
tmp = SUBREG_REG (tmp); \
|
||||
if (REG_P (tmp)) \
|
||||
{ \
|
||||
if (REG_OK_FP_BASE_P (tmp) \
|
||||
&& GET_CODE (XEXP (X, 1)) == CONST_INT) \
|
||||
goto ADDR; \
|
||||
if (REG_OK_FOR_BASE_P (tmp) \
|
||||
&& CONSTANT_ADDRESS_P (XEXP (X, 1))) \
|
||||
goto ADDR; \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
/* Now accept the simple address, or, for DImode only, an AND of a simple
|
||||
|
Loading…
Reference in New Issue
Block a user