diff options
author | Jim Wilson <wilson@cygnus.com> | 1999-02-12 13:31:48 +0000 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1999-02-12 05:31:48 -0800 |
commit | 564ea0512d274a1524479160c6fcc19d43ec342b (patch) | |
tree | 7c82effa40734a355a02edf3747e67c31c5b7128 | |
parent | 22505ad8f35c50ee96e5a642ea54e2de39ea2e52 (diff) | |
download | gcc-564ea0512d274a1524479160c6fcc19d43ec342b.zip gcc-564ea0512d274a1524479160c6fcc19d43ec342b.tar.gz gcc-564ea0512d274a1524479160c6fcc19d43ec342b.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/stmt.c | 11 | ||||
-rw-r--r-- | gcc/tree.h | 2 |
3 files changed, 16 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b88e8f8..507c2e5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +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> * reload.c (find_reloads_subreg_address): New function, broken out of @@ -2632,7 +2632,8 @@ expand_return (retval) } /* 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 /* This optimization is safe if there are local cleanups @@ -2840,12 +2841,13 @@ drop_through_at_end_p () /* 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 - 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 use it soon. */ -void +int optimize_tail_recursion (call_expr, last_insn) tree call_expr; rtx last_insn; @@ -2874,7 +2876,10 @@ optimize_tail_recursion (call_expr, last_insn) emit_queue (); expand_goto_internal (NULL_TREE, tail_recursion_label, last_insn); emit_barrier (); + return 1; } + + return 0; } /* 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)); extern void expand_null_return PROTO((void)); 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_end_bindings PROTO((tree, int, int)); extern void start_cleanup_deferral PROTO((void)); |