This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/32296] [4.3 Regression] Bootstrap failure in stage1 on hppa*-*-*
- From: "dave at hiauly1 dot hia dot nrc dot ca" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 14 Jun 2007 21:05:43 -0000
- Subject: [Bug rtl-optimization/32296] [4.3 Regression] Bootstrap failure in stage1 on hppa*-*-*
- References: <bug-32296-276@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #12 from dave at hiauly1 dot hia dot nrc dot ca 2007-06-14 21:05 -------
Subject: Re: [4.3 Regression] Bootstrap failure in stage1 on hppa*-*-*
> Sounds like the following patch would work:
>
> diff -r 149399c845b5 gcc/config/pa/pa.c
> --- a/gcc/config/pa/pa.c Tue Jun 12 15:49:27 2007 -0700
> +++ b/gcc/config/pa/pa.c Wed Jun 13 18:37:17 2007 -0700
> @@ -4415,7 +4415,7 @@ hppa_can_use_return_insn_p (void)
> {
> return (reload_completed
> && (compute_frame_size (get_frame_size (), 0) ? 0 : 1)
> - && df_hard_reg_used_count (2) == 1
> + && DF_REG_DEF_COUNT (2) == 0
> && ! frame_pointer_needed);
> }
>
>
> This essentially checks if r2 is ever written within the function
> (including the calls since r2 is included in the CALL_USED_REGS).
Thanks, I'll give it a try.
I had tried using current_function_is_leaf. However, it's not working.
It seems to work for some simple test cases but a trivial return is still
being generated in at least one situation where a non trivial return
is needed. I haven't had time to debug what's wrong.
Dave
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32296