t-mmix (TARGET_LIBGCC2_CFLAGS): Don't -Dinhibit_libc here.
* config/mmix/t-mmix (TARGET_LIBGCC2_CFLAGS): Don't -Dinhibit_libc here. * config/mmix/mmix.h (INITIAL_ELIMINATION_OFFSET): Remove spurious semicolon. * config/mmix/mmix.c (mmix_expand_builtin_va_arg): Variable-size types come in by-reference. Fix typo in comment. From-SVN: r51946
This commit is contained in:
parent
36e408e6ca
commit
392fc5b068
|
@ -1,3 +1,14 @@
|
||||||
|
2002-04-06 Hans-Peter Nilsson <hp@bitrange.com>
|
||||||
|
|
||||||
|
* config/mmix/t-mmix (TARGET_LIBGCC2_CFLAGS): Don't -Dinhibit_libc
|
||||||
|
here.
|
||||||
|
|
||||||
|
* config/mmix/mmix.h (INITIAL_ELIMINATION_OFFSET): Remove spurious
|
||||||
|
semicolon.
|
||||||
|
|
||||||
|
* config/mmix/mmix.c (mmix_expand_builtin_va_arg): Variable-size
|
||||||
|
types come in by-reference. Fix typo in comment.
|
||||||
|
|
||||||
2002-04-05 David S. Miller <davem@redhat.com>
|
2002-04-05 David S. Miller <davem@redhat.com>
|
||||||
|
|
||||||
* config/sparc/freebsd.h (ENDFILE_SPEC): Add crtfastmath bits.
|
* config/sparc/freebsd.h (ENDFILE_SPEC): Add crtfastmath bits.
|
||||||
|
|
|
@ -1273,7 +1273,7 @@ mmix_expand_builtin_va_arg (valist, type)
|
||||||
if (type == error_mark_node
|
if (type == error_mark_node
|
||||||
|| (type_size = TYPE_SIZE_UNIT (TYPE_MAIN_VARIANT (type))) == NULL
|
|| (type_size = TYPE_SIZE_UNIT (TYPE_MAIN_VARIANT (type))) == NULL
|
||||||
|| TREE_OVERFLOW (type_size))
|
|| TREE_OVERFLOW (type_size))
|
||||||
/* Presumable an error; the size isn't computable. A message has
|
/* Presumably an error; the size isn't computable. A message has
|
||||||
supposedly been emitted elsewhere. */
|
supposedly been emitted elsewhere. */
|
||||||
rounded_size = size_zero_node;
|
rounded_size = size_zero_node;
|
||||||
else
|
else
|
||||||
|
@ -1302,7 +1302,13 @@ mmix_expand_builtin_va_arg (valist, type)
|
||||||
}
|
}
|
||||||
else if (!integer_zerop (rounded_size))
|
else if (!integer_zerop (rounded_size))
|
||||||
{
|
{
|
||||||
/* If the size is less than a register, the we need to pad the
|
if (!really_constant_p (type_size))
|
||||||
|
/* Varying-size types come in by reference. */
|
||||||
|
addr_tree
|
||||||
|
= build1 (INDIRECT_REF, build_pointer_type (type), addr_tree);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* If the size is less than a register, then we need to pad the
|
||||||
address by adding the difference. */
|
address by adding the difference. */
|
||||||
tree addend
|
tree addend
|
||||||
= fold (build (COND_EXPR, sizetype,
|
= fold (build (COND_EXPR, sizetype,
|
||||||
|
@ -1314,10 +1320,11 @@ mmix_expand_builtin_va_arg (valist, type)
|
||||||
rounded_size,
|
rounded_size,
|
||||||
type_size))));
|
type_size))));
|
||||||
tree addr_tree1
|
tree addr_tree1
|
||||||
= fold (build (PLUS_EXPR, TREE_TYPE (addr_tree), addr_tree, addend));
|
= fold (build (PLUS_EXPR, TREE_TYPE (addr_tree), addr_tree,
|
||||||
|
addend));
|
||||||
|
|
||||||
/* If this type is larger than what fits in a register, then it is
|
/* If this type is larger than what fits in a register, then it
|
||||||
passed by reference. */
|
is passed by reference. */
|
||||||
addr_tree
|
addr_tree
|
||||||
= fold (build (COND_EXPR, TREE_TYPE (addr_tree1),
|
= fold (build (COND_EXPR, TREE_TYPE (addr_tree1),
|
||||||
fold (build (GT_EXPR, sizetype,
|
fold (build (GT_EXPR, sizetype,
|
||||||
|
@ -1327,6 +1334,7 @@ mmix_expand_builtin_va_arg (valist, type)
|
||||||
addr_tree1),
|
addr_tree1),
|
||||||
addr_tree1));
|
addr_tree1));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
addr = expand_expr (addr_tree, NULL_RTX, Pmode, EXPAND_NORMAL);
|
addr = expand_expr (addr_tree, NULL_RTX, Pmode, EXPAND_NORMAL);
|
||||||
addr = copy_to_reg (addr);
|
addr = copy_to_reg (addr);
|
||||||
|
|
|
@ -695,7 +695,7 @@ enum reg_class
|
||||||
#define CAN_ELIMINATE(FROM, TO) 1
|
#define CAN_ELIMINATE(FROM, TO) 1
|
||||||
|
|
||||||
#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
|
#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
|
||||||
(OFFSET) = mmix_initial_elimination_offset (FROM, TO);
|
(OFFSET) = mmix_initial_elimination_offset (FROM, TO)
|
||||||
|
|
||||||
|
|
||||||
/* Node: Stack Arguments */
|
/* Node: Stack Arguments */
|
||||||
|
|
|
@ -6,7 +6,7 @@ LIBGCC1 =
|
||||||
LIBGCC1_TEST =
|
LIBGCC1_TEST =
|
||||||
CROSS_LIBGCC1 =
|
CROSS_LIBGCC1 =
|
||||||
|
|
||||||
TARGET_LIBGCC2_CFLAGS = -mlibfuncs -Dinhibit_libc -O2
|
TARGET_LIBGCC2_CFLAGS = -mlibfuncs -O2
|
||||||
|
|
||||||
EXTRA_MULTILIB_PARTS = crti.o crtn.o crtbegin.o crtend.o
|
EXTRA_MULTILIB_PARTS = crti.o crtn.o crtbegin.o crtend.o
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue