[llvm-dev] Allowing virtual registers after register allocation

Quentin Colombet via llvm-dev llvm-dev at lists.llvm.org
Thu Dec 10 11:11:19 PST 2015

> 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.

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

More information about the llvm-dev mailing list