Commit 053d3344 by Hans-Peter Nilsson Committed by Hans-Peter Nilsson

cris.c (cris_target_asm_function_prologue): Cast uses of PIC_OFFSET_TABLE_REGNUM…

cris.c (cris_target_asm_function_prologue): Cast uses of PIC_OFFSET_TABLE_REGNUM to int to silence warnings.

	* config/cris/cris.c (cris_target_asm_function_prologue): Cast
	uses of PIC_OFFSET_TABLE_REGNUM to int to silence warnings.
	(cris_target_asm_function_epilogue): Ditto.
	(cris_initial_frame_pointer_offset): Ditto.
	(cris_simple_epilogue): Ditto.
	(cris_expand_builtin_va_arg): Variable-size types come in
	by-reference.

From-SVN: r51825
parent 61ab5260
2002-04-04 Hans-Peter Nilsson <hp@axis.com>
* config/cris/cris.c (cris_target_asm_function_prologue): Cast
uses of PIC_OFFSET_TABLE_REGNUM to int to silence warnings.
(cris_target_asm_function_epilogue): Ditto.
(cris_initial_frame_pointer_offset): Ditto.
(cris_simple_epilogue): Ditto.
(cris_expand_builtin_va_arg): Variable-size types come in
by-reference.
2002-04-03 David S. Miller <davem@redhat.com> 2002-04-03 David S. Miller <davem@redhat.com>
* config/sparc/crtfastmath.c (FPRS_NS): Get it right for * config/sparc/crtfastmath.c (FPRS_NS): Get it right for
......
...@@ -711,7 +711,7 @@ cris_target_asm_function_prologue (file, size) ...@@ -711,7 +711,7 @@ cris_target_asm_function_prologue (file, size)
{ {
if ((((regs_ever_live[regno] if ((((regs_ever_live[regno]
&& !call_used_regs[regno]) && !call_used_regs[regno])
|| (regno == PIC_OFFSET_TABLE_REGNUM || (regno == (int) PIC_OFFSET_TABLE_REGNUM
&& (current_function_uses_pic_offset_table && (current_function_uses_pic_offset_table
/* It is saved anyway, if there would be a gap. */ /* It is saved anyway, if there would be a gap. */
|| (flag_pic || (flag_pic
...@@ -1043,7 +1043,7 @@ cris_target_asm_function_epilogue (file, size) ...@@ -1043,7 +1043,7 @@ cris_target_asm_function_epilogue (file, size)
regno++) regno++)
if ((((regs_ever_live[regno] if ((((regs_ever_live[regno]
&& !call_used_regs[regno]) && !call_used_regs[regno])
|| (regno == PIC_OFFSET_TABLE_REGNUM || (regno == (int) PIC_OFFSET_TABLE_REGNUM
&& (current_function_uses_pic_offset_table && (current_function_uses_pic_offset_table
/* It is saved anyway, if there would be a gap. */ /* It is saved anyway, if there would be a gap. */
|| (flag_pic || (flag_pic
...@@ -1069,7 +1069,7 @@ cris_target_asm_function_epilogue (file, size) ...@@ -1069,7 +1069,7 @@ cris_target_asm_function_epilogue (file, size)
regno--) regno--)
if ((((regs_ever_live[regno] if ((((regs_ever_live[regno]
&& !call_used_regs[regno]) && !call_used_regs[regno])
|| (regno == PIC_OFFSET_TABLE_REGNUM || (regno == (int) PIC_OFFSET_TABLE_REGNUM
&& (current_function_uses_pic_offset_table && (current_function_uses_pic_offset_table
/* It is saved anyway, if there would be a gap. */ /* It is saved anyway, if there would be a gap. */
|| (flag_pic || (flag_pic
...@@ -1659,7 +1659,7 @@ cris_initial_frame_pointer_offset () ...@@ -1659,7 +1659,7 @@ cris_initial_frame_pointer_offset ()
for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
if ((((regs_ever_live[regno] if ((((regs_ever_live[regno]
&& !call_used_regs[regno]) && !call_used_regs[regno])
|| (regno == PIC_OFFSET_TABLE_REGNUM || (regno == (int) PIC_OFFSET_TABLE_REGNUM
&& (current_function_uses_pic_offset_table && (current_function_uses_pic_offset_table
/* It is saved anyway, if there would be a gap. */ /* It is saved anyway, if there would be a gap. */
|| (flag_pic || (flag_pic
...@@ -2051,7 +2051,7 @@ cris_simple_epilogue () ...@@ -2051,7 +2051,7 @@ cris_simple_epilogue ()
in the delay-slot of the "ret". */ in the delay-slot of the "ret". */
for (regno = 0; regno < reglimit; regno++) for (regno = 0; regno < reglimit; regno++)
if ((regs_ever_live[regno] && ! call_used_regs[regno]) if ((regs_ever_live[regno] && ! call_used_regs[regno])
|| (regno == PIC_OFFSET_TABLE_REGNUM || (regno == (int) PIC_OFFSET_TABLE_REGNUM
&& (current_function_uses_pic_offset_table && (current_function_uses_pic_offset_table
/* It is saved anyway, if there would be a gap. */ /* It is saved anyway, if there would be a gap. */
|| (flag_pic || (flag_pic
...@@ -2626,7 +2626,7 @@ cris_expand_builtin_va_arg (valist, type) ...@@ -2626,7 +2626,7 @@ cris_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
...@@ -2640,28 +2640,30 @@ cris_expand_builtin_va_arg (valist, type) ...@@ -2640,28 +2640,30 @@ cris_expand_builtin_va_arg (valist, type)
if (!integer_zerop (rounded_size)) if (!integer_zerop (rounded_size))
{ {
/* Check if the type is passed by value or by reference. This test must /* Check if the type is passed by value or by reference. Values up
be different than the call-site test and be done at run-time: to 8 bytes are passed by-value, padded to register-size (4
gcc.c-torture/execute/20020307-2.c. Hence the tree stuff. bytes). Larger values and varying-size types are passed
by reference. */
Values up to 8 bytes are passed by-value, padded to register-size
(4 bytes). Larger values are passed by-reference. */
passed_size passed_size
= fold (build (COND_EXPR, sizetype, = (!really_constant_p (type_size)
fold (build (GT_EXPR, sizetype, ? size4
rounded_size, : fold (build (COND_EXPR, sizetype,
size8)), fold (build (GT_EXPR, sizetype,
size4, rounded_size,
rounded_size)); size8)),
size4,
rounded_size)));
addr_tree addr_tree
= fold (build (COND_EXPR, TREE_TYPE (addr_tree), = (!really_constant_p (type_size)
fold (build (GT_EXPR, sizetype, ? build1 (INDIRECT_REF, build_pointer_type (type), addr_tree)
rounded_size, : fold (build (COND_EXPR, TREE_TYPE (addr_tree),
size8)), fold (build (GT_EXPR, sizetype,
build1 (INDIRECT_REF, build_pointer_type (type), rounded_size,
addr_tree), size8)),
addr_tree)); build1 (INDIRECT_REF, build_pointer_type (type),
addr_tree),
addr_tree)));
} }
addr = expand_expr (addr_tree, NULL_RTX, Pmode, EXPAND_NORMAL); addr = expand_expr (addr_tree, NULL_RTX, Pmode, EXPAND_NORMAL);
......
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