Commit 06d69cd3 by Richard Henderson Committed by Richard Henderson

alpha.h (PROMOTE_MODE): Don't promote vector types.

        * config/alpha/alpha.h (PROMOTE_MODE): Don't promote vector types.
        * config/alpha/alpha.c (function_value): Use PROMOTE_MODE.

From-SVN: r85989
parent 1c5192e4
2004-08-14 Richard Henderson <rth@redhat.com>
* config/alpha/alpha.h (PROMOTE_MODE): Don't promote vector types.
* config/alpha/alpha.c (function_value): Use PROMOTE_MODE.
2004-08-13 Richard Henderson <rth@redhat.com>
* config/i386/i386.md (call_1, sibcall_1, call_1_rex64): Use Pmode
......
......@@ -5160,7 +5160,7 @@ rtx
function_value (tree valtype, tree func ATTRIBUTE_UNUSED,
enum machine_mode mode)
{
unsigned int regnum;
unsigned int regnum, dummy;
enum mode_class class;
#ifdef ENABLE_CHECKING
......@@ -5175,8 +5175,7 @@ function_value (tree valtype, tree func ATTRIBUTE_UNUSED,
switch (class)
{
case MODE_INT:
/* Do the same thing as PROMOTE_MODE. */
mode = DImode;
PROMOTE_MODE (mode, dummy, valtype);
/* FALLTHRU */
case MODE_COMPLEX_INT:
......
......@@ -471,16 +471,22 @@ extern const char *alpha_tls_size_string; /* For -mtls-size= */
type, but kept valid in the wider mode. The signedness of the
extension may differ from that of the type.
For Alpha, we always store objects in a full register. 32-bit objects
are always sign-extended, but smaller objects retain their signedness. */
#define PROMOTE_MODE(MODE,UNSIGNEDP,TYPE) \
if (GET_MODE_CLASS (MODE) == MODE_INT \
&& GET_MODE_SIZE (MODE) < UNITS_PER_WORD) \
{ \
if ((MODE) == SImode) \
(UNSIGNEDP) = 0; \
(MODE) = DImode; \
For Alpha, we always store objects in a full register. 32-bit integers
are always sign-extended, but smaller objects retain their signedness.
Note that small vector types can get mapped onto integer modes at the
whim of not appearing in alpha-modes.def. We never promoted these
values before; don't do so now that we've trimed the set of modes to
those actually implemented in the backend. */
#define PROMOTE_MODE(MODE,UNSIGNEDP,TYPE) \
if (GET_MODE_CLASS (MODE) == MODE_INT \
&& (TYPE == NULL || TREE_CODE (TYPE) != VECTOR_TYPE) \
&& GET_MODE_SIZE (MODE) < UNITS_PER_WORD) \
{ \
if ((MODE) == SImode) \
(UNSIGNEDP) = 0; \
(MODE) = DImode; \
}
/* Define this if most significant bit is lowest numbered
......
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