Commit fbffc70a by Geoffrey Keating

function.c (expand_function_end): Always clobber the return registers, even if…

function.c (expand_function_end): Always clobber the return registers, even if there is no return label.

	* function.c (expand_function_end): Always clobber the
	return registers, even if there is no return label.

From-SVN: r41612
parent 9cc03fab
2001-04-26 Geoffrey Keating <geoffk@redhat.com>
* function.c (expand_function_end): Always clobber the
return registers, even if there is no return label.
Thu Apr 26 20:28:21 CEST 2001 Jan Hubicka <jh@suse.cz>
* (ix86_expand_fp_movcc): Re-enable SSE conditional move generation.
......@@ -77,6 +82,7 @@ Thu Apr 26 19:20:28 CEST 2001 Jan Hubicka <jh@suse.cz>
* config/i386/i386.h (CC1_CPU_SPEC): Fix deprecation warnings for
-m386 and -m486.
>>>>>>> 1.9867
2001-04-26 Alexandre Oliva <aoliva@redhat.com>
* configure.in (configargs.h): Define thread_model.
......@@ -161,6 +167,7 @@ Wed Apr 25 17:09:50 2001 J"orn Rennecke <amylaar@redhat.com>
(get_exception_filter): New fn.
(finish_eh_generation): Use it.
>>>>>>> 1.9859
2001-04-24 Nathan Sidwell <nathan@codesourcery.com>
* c-semantics.c (add_scope_stmt): Don't call
......
......@@ -6777,31 +6777,29 @@ expand_function_end (filename, line, end_bindings)
SDB depends on this. */
emit_line_note_force (filename, line);
/* Before the return label (if any), clobber the return
registers so that they are not propogated live to the rest of
the function. This can only happen with functions that drop
through; if there had been a return statement, there would
have either been a return rtx, or a jump to the return label. */
{
rtx before, after;
before = get_last_insn ();
clobber_return_register ();
after = get_last_insn ();
if (before != after)
cfun->x_clobber_return_insn = after;
}
/* Output the label for the actual return from the function,
if one is expected. This happens either because a function epilogue
is used instead of a return instruction, or because a return was done
with a goto in order to run local cleanups, or because of pcc-style
structure returning. */
if (return_label)
{
rtx before, after;
/* Before the return label, clobber the return registers so that
they are not propogated live to the rest of the function. This
can only happen with functions that drop through; if there had
been a return statement, there would have either been a return
rtx, or a jump to the return label. */
before = get_last_insn ();
clobber_return_register ();
after = get_last_insn ();
if (before != after)
cfun->x_clobber_return_insn = after;
emit_label (return_label);
}
emit_label (return_label);
/* C++ uses this. */
if (end_bindings)
......
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