This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

new-new-ra thoughts

OK, so we've come up with some interesting information...

Steven Bosscher said:
>Specifically, "instruction selection",
>or in GCC terms alternative selection, should happen before regalloc
>as much as possible, and in general machine descriptions should not
>rely on reload to fix all the silly insns that look nothing like the
>actual machine instructions.

This is clearly correct.  This could be, in some sense, a "lowering" stage,
in which "generic RTL" (well, semi-generic) is transformed into
"machine-specific RTL".

Can this, in fact, be done before register allocation using the current
machine descriptions?  If so, it would be worth working out a proof of concept.

I don't know the state of pseudo use prior to regalloc.  Has liveness analysis
been performed, so that each pseudo corresponds to a single live range?

If so it would be worthwhile to have a pass which identified pseudos for
which there simply is no valid register class available, and split their
ranges early.

Thinking out loud:
If a particular pseudo (live range) has several alternative instruction
selection choices, but some combinations could only be satisfied by a
particularly small register class, perhaps some sort of cost mechanism could
encourage use of the instructions which have large register classes.  Hmm.
That's not going to work because it won't spread the use of the classes
around.  How about (grotesque, I know) producing solutions for both
expansions and providing them to the register allocator?...

This space intentionally left blank.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]