Commit 564ea051 by Jim Wilson Committed by Jim Wilson

Fix linux-x-cygwin build failure with readline.

	* stmt.c (expand_return): Return if optimize_tail_recursion succeeded.
	(optimize_tail_recursion): Change return type from void to int.
	Add return statements.
	* tree.h (optimize_tail_recursion): Change prototype to match.

From-SVN: r25170
parent 22505ad8
Fri Feb 12 13:06:28 1999 Jim Wilson <wilson@cygnus.com>
* stmt.c (expand_return): Return if optimize_tail_recursion succeeded.
(optimize_tail_recursion): Change return type from void to int.
Add return statements.
* tree.h (optimize_tail_recursion): Change prototype to match.
Fri Feb 12 21:09:51 1999 J"orn Rennecke <amylaar@cygnus.co.uk> Fri Feb 12 21:09:51 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
* reload.c (find_reloads_subreg_address): New function, broken out of * reload.c (find_reloads_subreg_address): New function, broken out of
......
...@@ -2632,7 +2632,8 @@ expand_return (retval) ...@@ -2632,7 +2632,8 @@ expand_return (retval)
} }
/* Attempt to optimize the call if it is tail recursive. */ /* Attempt to optimize the call if it is tail recursive. */
optimize_tail_recursion (retval_rhs, last_insn); if (optimize_tail_recursion (retval_rhs, last_insn))
return;
#ifdef HAVE_return #ifdef HAVE_return
/* This optimization is safe if there are local cleanups /* This optimization is safe if there are local cleanups
...@@ -2840,12 +2841,13 @@ drop_through_at_end_p () ...@@ -2840,12 +2841,13 @@ drop_through_at_end_p ()
/* Test CALL_EXPR to determine if it is a potential tail recursion call /* Test CALL_EXPR to determine if it is a potential tail recursion call
and emit code to optimize the tail recursion. LAST_INSN indicates where and emit code to optimize the tail recursion. LAST_INSN indicates where
to place the jump to the tail recursion label. to place the jump to the tail recursion label. Return TRUE if the
call was optimized into a goto.
This is only used by expand_return, but expand_call is expected to This is only used by expand_return, but expand_call is expected to
use it soon. */ use it soon. */
void int
optimize_tail_recursion (call_expr, last_insn) optimize_tail_recursion (call_expr, last_insn)
tree call_expr; tree call_expr;
rtx last_insn; rtx last_insn;
...@@ -2874,7 +2876,10 @@ optimize_tail_recursion (call_expr, last_insn) ...@@ -2874,7 +2876,10 @@ optimize_tail_recursion (call_expr, last_insn)
emit_queue (); emit_queue ();
expand_goto_internal (NULL_TREE, tail_recursion_label, last_insn); expand_goto_internal (NULL_TREE, tail_recursion_label, last_insn);
emit_barrier (); emit_barrier ();
return 1;
} }
return 0;
} }
/* Emit code to alter this function's formal parms for a tail-recursive call. /* Emit code to alter this function's formal parms for a tail-recursive call.
......
...@@ -1933,7 +1933,7 @@ extern int expand_exit_something PROTO((void)); ...@@ -1933,7 +1933,7 @@ extern int expand_exit_something PROTO((void));
extern void expand_null_return PROTO((void)); extern void expand_null_return PROTO((void));
extern void expand_return PROTO((tree)); extern void expand_return PROTO((tree));
extern void optimize_tail_recursion PROTO((tree, struct rtx_def *)); extern int optimize_tail_recursion PROTO((tree, struct rtx_def *));
extern void expand_start_bindings PROTO((int)); extern void expand_start_bindings PROTO((int));
extern void expand_end_bindings PROTO((tree, int, int)); extern void expand_end_bindings PROTO((tree, int, int));
extern void start_cleanup_deferral PROTO((void)); extern void start_cleanup_deferral PROTO((void));
......
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