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