[llvm-dev] Allowing virtual registers after register allocation

Quentin Colombet via llvm-dev
2015-12-10T19:11:19Z

> On Dec 10, 2015, at 10:49 AM, Derek Schuff <dschuff at google.com>
wrote:
>
>
>
> On Thu, Dec 10, 2015 at 10:13 AM Quentin Colombet <qcolombet at
apple.com <mailto:qcolombet at apple.com>> wrote:
>
> I am tempted to think no, we don’t, but I don’t know the use cases.
> What post-RA passes with want to run with virtual regs?
>
> The immediate one that precipitated this mail was PrologEpilogInserter.
> However currently the only other pass we have disabled in
WebAssemblyTargetMachine is MachineCopyPropagation.
> Several passes (post-RA MachineLICM, StackSlotColoring) already only run if
RA runs.
> Everything else is running today. Currently that's ShrinkWrap,
BranchFolder, ExpandPostRAPseudos, PostRAScheduler, GCMachineCodeAnalysis,
MachineBlockPlacement, FuncletLayout, and StackMapLiveness. All of these run
after our register coloring pass.

I don’t know for the other passes, but I don’t think it makes sense to teach
PrologEpilogInserter to work on virtual registers, since part of its job is to
get rid of any virtual registers created when lowering the frame.
I.e., that would indirectly mean that we would need to teach the scavenger how
to recycle virtual registers!

The bottom line is, it feels wrong to me.

Cheers,
Q.
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20151210/f0a0f580/attachment.html>