This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [rfc] multi-word subreg lowering pass
- From: Björn Haase <bjoern dot m dot haase at web dot de>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Richard Henderson <rth at redhat dot com>
- Date: Sun, 8 May 2005 01:18:03 +0200
- Subject: Re: [rfc] multi-word subreg lowering pass
- References: <200505062218.15370.bjoern.m.haase@web.de> <200505072051.14372.bjoern.m.haase@web.de> <20050507230529.GC4245@redhat.com>
Am Sonntag, 8. Mai 2005 01:05 schrieb Richard Henderson:
> On Sat, May 07, 2005 at 08:51:14PM +0200, Björn Haase wrote:
> > I think that your patch indeed could be very helpful for the avr port
> > :-)! However, I am facing a couple of difficulties with getting it
> > running. Main problem is that I am not succeding to compile libgcc with
> > your patch: I am constantly getting segmentation faults.
>
> With the following follow-on patch I'm able to build libgcc for avr.
>
>
> r~
>
>
> --- lower-subreg.c.orig 2005-05-07 15:53:06.000000000 -0700
> +++ lower-subreg.c 2005-05-07 16:00:16.000000000 -0700
> @@ -576,7 +576,15 @@
>
> set = simple_move (insn);
> if (set)
> - find_pseudo_copy (set);
> + {
> + /* (set cc0 reg) is a comparison instruction and cannot be
> + decomposed. Clear SET so that we recognize this fact when
> + we see it in find_decomposable_subregs. */
> + if (CC0_P (SET_DEST (set)))
> + set = NULL;
> + else
> + find_pseudo_copy (set);
> + }
> for_each_rtx (&PATTERN (insn), find_decomposable_subregs, set);
> }
I'll try it tomorrow,
I meanwhile have prepared a modified avr.md with expand patterns replacing the
define_insn. Looks *really* good. Registers are allocated in a weird fashion.
Yours,
Björn