This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [new-regalloc-branch]: (try_recolor_web) reset colors bugfix
- From: Michael Matz <matz at kde dot org>
- To: Denis Chertykov <denisc at overta dot ru>
- Cc: <gcc-patches at gcc dot gnu dot org>
- Date: Fri, 1 Mar 2002 17:26:12 +0100 (MET)
- Subject: Re: [new-regalloc-branch]: (try_recolor_web) reset colors bugfix
Hi,
On 1 Mar 2002, Denis Chertykov wrote:
> > Out of curiousity: did it make a difference for a certain testcase you
> > have?
>
> Yes. I can't compile moddi3 from libgcc.c:
>
> [... explanation what went wrong ...]
Thanks for the clarification. It indeed was a real bug to not restore all
colors in case of failure.
> About pre-reload:
> I have ready version of pre_reload_collect - function which collect
> defs/uses for all insns. This defs/uses based on information from
> insns constrains. Defs/uses from constrains differs from defs/uses
> based on rtl (df defs/uses).
> Differences are:
> 1. All registers with mode class MODE_CC;
> 2. Asm insns with clobbers added by MD_ASM_CLOBBERS;
> 3. Call_insns. You already wrote about this;
> 3a. Return value from call. IE (set (reg ax) (call ....));
> 4. Insns like: (clobber reg:DI NNN) or (use (reg:DI NNN));
> 5. df.c builds (HARD_REGNO_NREGS (regno,mode)) defs/uses for hardregs.
But for the "normal" uses/defs of pseudos (i.e. simple
(set (reg:M x) (op (reg:M a) (reg:M b))) ) you have distinguished
defs/uses, right? In which way are the above cases represented
differently from those normal refs (I think I've an idea for case 3. just
a regset of all clobbered hardregs for the whole insn e.g.). What's the
rationale for representing all things having MODE_CC different?
> What will we do with differences ?
This depends on the answers to above questions ;-) I would guess, we
would store also rtx* pointers to the real locations of the pseudo-regs in
question, and simply rework ra.c to use those new refs instead of df.c's.
Ciao,
Michael.