[llvm] r231324 - Remove the conditional addition of the execution dependency fixing

Eric Christopher echristo at gmail.com
Thu Mar 5 00:48:12 PST 2015


On Thu, Mar 5, 2015 at 12:35 AM Owen Anderson <resistor at mac.com> wrote:

> So, I’m not sure I like the direction these changes are going.  For
> low-latency compilation use cases, every additional pass scheduled incurs
> non-trivial extra compilation time costs.  My uses, which fit that
> scenario, are specifically tuned *not* to schedule passes that are not
> needed for specific subtargets, even when they would be no-ops, and it
> would a significant regression compile-time regression for us to lose that
> capability.
>
>
I think the best bet for you would be to have a custom manager for each
subtarget then ala the way you could create a target machine that is arm or
thumb out of the same directory. That would work for your needs I imagine
while keeping this separated.

Another option is that since your need is a fairly... narrow compilation
strategy that you could, instead of using the TargetMachine::getSubtarget
you could define your own that happens to always return the same subtarget
and use that in constructing your passes. Just because the generalized
TargetMachine is going away doesn't mean that you can't implement your own
if all you really have is a single subtarget at a time.

I basically mention this in order of personal preference, I think both will
work for you just fine, though I've not actually prototyped them up.

-eric


> —Owen
>
> > On Mar 4, 2015, at 4:28 PM, Eric Christopher <echristo at gmail.com> wrote:
> >
> > Author: echristo
> > Date: Wed Mar  4 18:28:55 2015
> > New Revision: 231324
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=231324&view=rev
> > Log:
> > Remove the conditional addition of the execution dependency fixing
> > pass from the ARM backend as the pass itself will detect any use
> > of the appropriate register class.
> >
> > Modified:
> >    llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp
> >
> > Modified: llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp
> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/
> ARM/ARMTargetMachine.cpp?rev=231324&r1=231323&r2=231324&view=diff
> > ============================================================
> ==================
> > --- llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp (original)
> > +++ llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp Wed Mar  4 18:28:55
> 2015
> > @@ -358,9 +358,7 @@ void ARMPassConfig::addPreRegAlloc() {
> > void ARMPassConfig::addPreSched2() {
> >   if (getOptLevel() != CodeGenOpt::None) {
> >     addPass(createARMLoadStoreOptimizationPass());
> > -
> > -    if (getARMSubtarget().hasNEON())
> > -      addPass(createExecutionDependencyFixPass(&ARM::DPRRegClass));
> > +    addPass(createExecutionDependencyFixPass(&ARM::DPRRegClass));
> >   }
> >
> >   // Expand some pseudo instructions into multiple instructions to allow
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150305/142d0b84/attachment.html>


More information about the llvm-commits mailing list