calls.c (initialize_argument_information): Forbid sibcalls if a callee-copied argument is stored in the current function's...

* calls.c (initialize_argument_information): Forbid sibcalls if a
	callee-copied argument is stored in the current function's frame.

From-SVN: r82129
This commit is contained in:
Richard Sandiford 2004-05-22 10:43:56 +00:00 committed by Richard Sandiford
parent fea6ecb746
commit 9fd4743509
2 changed files with 12 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2004-05-22 Richard Sandiford <rsandifo@redhat.com>
* calls.c (initialize_argument_information): Forbid sibcalls if a
callee-copied argument is stored in the current function's frame.
2004-05-22 Eric Christopher <echristo@redhat.com>
* fix-header.c (read_scan_file): Update for add_path change.

View File

@ -1129,6 +1129,13 @@ initialize_argument_information (int num_actuals ATTRIBUTE_UNUSED,
&& ! REG_P (DECL_RTL (TREE_OPERAND (args[i].tree_value, 1))))
args[i].tree_value = TREE_OPERAND (args[i].tree_value, 1);
/* We can't use sibcalls if a callee-copied argument is stored
in the current function's frame. */
if (!call_from_thunk_p
&& (!DECL_P (args[i].tree_value)
|| !TREE_STATIC (args[i].tree_value)))
*may_tailcall = false;
args[i].tree_value = build1 (ADDR_EXPR,
build_pointer_type (type),
args[i].tree_value);