* calls.c (initialize_argument_information): Forbid sibcalls if a
callee-copied argument is stored in the current function's frame.
From-SVN: r82129
+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.
&& ! 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);