[PATCH] Consider error-reporting calls cold in BPI
Hal Finkel
hfinkel at anl.gov
Fri Nov 15 16:40:07 PST 2013
----- Original Message -----
> ----- Original Message -----
> >
> >
> >
> > On Mon, Nov 11, 2013 at 10:04 PM, Hal Finkel < hfinkel at anl.gov >
> > wrote:
> >
> >
> >
> >
> > ----- Original Message -----
> > >
> > >
> > >
> > >
> > > On Sat, Nov 9, 2013 at 5:44 AM, Hal Finkel < hfinkel at anl.gov >
> > > wrote:
> > >
> > >
> > > Okay, I've attached a patch that adds this into SimplifyLibCalls.
> > > In
> > > this incarnation, I've added the functionality at the top-level
> > > of
> > > SimplifyLibCalls itself (which makes it different from all of the
> > > other simplifications). My rationale for this is that adding the
> > > cold hint should not depend on the builtin status of the
> > > functions.
> > > I'm not sure how much I like this. Thoughts?
> > > I think it should depend on the builtin status of the functions.
> > > If
> > > we're in a freestanding environment, there is no reason to
> > > believe
> > > that the meanings for the various file descriptors continue to
> > > hold.
> >
> > Chandler, Meador, et al.,
> >
> > Thanks for your feedback! I've attached a new version (which makes
> > this look much like all of the other optimizations). Please review.
> >
> >
> >
> > While I deeply question the fundamental design here, I suspect your
> > patch should follow it.
> >
>
> Yea, also not my favorite ;)
>
> >
> > + ErrorReportingOpt ER(/* StreamArg = */ 0);
> > + (void) ER.callOptimizer(Callee, CI, B);
> > +
> >
> >
> > The way the rest of the simplify lib calls works is for specific
> > lib
> > calls to subclass a more more specialized base class to provide
> > delegated optimizations, not to build an instance of the class...
>
> Heh... I was specifically trying to follow the existing pattern here.
> For example:
>
> struct CosOpt : public UnsafeFPLibCallOptimization {
> CosOpt(bool UnsafeFPShrink) :
> UnsafeFPLibCallOptimization(UnsafeFPShrink) {}
> virtual Value *callOptimizer(Function *Callee, CallInst *CI,
> IRBuilder<> &B) {
> Value *Ret = NULL;
> if (UnsafeFPShrink && Callee->getName() == "cos" &&
> TLI->has(LibFunc::cosf)) {
> UnaryDoubleFPOpt UnsafeUnaryDoubleFP(true);
> Ret = UnsafeUnaryDoubleFP.callOptimizer(Callee, CI, B);
> }
> ...
>
> >
> >
> > Bah, maybe just put this in a couple of static function and use a
> > more boring design? Seems simpler.
>
> I could certainly move all of the real logic in ErrorReportingOpt
> into a static member function, and call it from the other three
> places. Or would you prefer that I move the whole thing into a
> static function that is called from
> LibCallSimplifierImpl::lookupOptimization (or elsewhere)?
Chandler, are you okay with me committing this as is? As noted, I think that it matches the existing design.
Thanks again,
Hal
>
> Thanks again,
> Hal
>
> >
> >
> > -Chandler
> >
> >
> >
> >
> > -Hal
> >
> >
> >
> > --
> > Hal Finkel
> > Assistant Computational Scientist
> > Leadership Computing Facility
> > Argonne National Laboratory
> >
> >
>
> --
> Hal Finkel
> Assistant Computational Scientist
> Leadership Computing Facility
> Argonne National Laboratory
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
--
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
More information about the llvm-commits
mailing list