Commit 44bd7f65 by Eric Botcazou Committed by Eric Botcazou

ia64.c (ia64_compute_frame_size): Allocate the scratch area if the function…

ia64.c (ia64_compute_frame_size): Allocate the scratch area if the function allocates dynamic stack space.

	* config/ia64/ia64.c (ia64_compute_frame_size): Allocate the scratch
	area if the function allocates dynamic stack space.
	(ia64_initial_elimination_offset): Adjust offsets to above change.

From-SVN: r194121
parent 8c4d267c
2012-12-03 Eric Botcazou <ebotcazou@adacore.com>
* config/ia64/ia64.c (ia64_compute_frame_size): Allocate the scratch
area if the function allocates dynamic stack space.
(ia64_initial_elimination_offset): Adjust offsets to above change.
2012-12-03 Steven Bosscher <steven@gcc.gnu.org>
* gcse.c (struct reg_use): Remove unused struct.
......@@ -2885,8 +2885,10 @@ ia64_compute_frame_size (HOST_WIDE_INT size)
/* We always use the 16-byte scratch area provided by the caller, but
if we are a leaf function, there's no one to which we need to provide
a scratch area. */
if (crtl->is_leaf)
a scratch area. However, if the function allocates dynamic stack space,
the dynamic offset is computed early and contains STACK_POINTER_OFFSET,
so we need to cope. */
if (crtl->is_leaf && !cfun->calls_alloca)
total_size = MAX (0, total_size - 16);
current_frame_info.total_size = total_size;
......@@ -2920,18 +2922,15 @@ ia64_initial_elimination_offset (int from, int to)
switch (to)
{
case HARD_FRAME_POINTER_REGNUM:
if (crtl->is_leaf)
offset = -current_frame_info.total_size;
else
offset = -(current_frame_info.total_size
- crtl->outgoing_args_size - 16);
offset = -current_frame_info.total_size;
if (!crtl->is_leaf || cfun->calls_alloca)
offset += 16 + crtl->outgoing_args_size;
break;
case STACK_POINTER_REGNUM:
if (crtl->is_leaf)
offset = 0;
else
offset = 16 + crtl->outgoing_args_size;
offset = 0;
if (!crtl->is_leaf || cfun->calls_alloca)
offset += 16 + crtl->outgoing_args_size;
break;
default:
......
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