Thanks Doug, Patch applied with a few additional comments in r164989.
Cheers, Lang. On Mon, Oct 1, 2012 at 3:07 PM, Douglas Gregor <[email protected]> wrote: > > On Oct 1, 2012, at 3:02 PM, Lang Hames <[email protected]> wrote: > > Hi Doug, > > I've attached a new patch with your suggestions included: the bool field > has been replaced with unsigned, tests have been added, and the default > value for fpContractable has been removed from the constructors. With > regards to the last point: it does force people to give a value for a field > that's not applicable to a lot of cases, which could be confusing. I don't > have a strong objection to it though, so if you think it's the better way > to go I'm happy with that. > > > I'd rather have people be confused and look it up, rather than omitting it > when they should have computed it. > > Let me know if this looks ok and I'll commit it. > > > LGTM. > > Cheers, > Lang. > > On Sun, Sep 30, 2012 at 9:26 PM, Douglas Gregor <[email protected]> wrote: > >> >> On Sep 26, 2012, at 10:22 PM, Lang Hames <[email protected]> wrote: >> >> Hi Hal, >> >> Sorry - that was an oversight on my part. I've now added support for >> expressions of the form (a * b - c) and (c - a * b). Adding that feature >> also prompted me to refactor some of the codegen logic, and testing helped >> me find a couple of bugs where I'd failed to propagate the contractable bit >> during template instantiation. >> >> Updated patch attached. >> >> >> Index: include/clang/AST/Expr.h >> =================================================================== >> --- include/clang/AST/Expr.h (revision 164758) >> +++ include/clang/AST/Expr.h (working copy) >> @@ -2782,6 +2782,7 @@ >> >> private: >> unsigned Opc : 6; >> + bool FPContractable : 1; >> SourceLocation OpLoc; >> >> enum { LHS, RHS, END_EXPR }; >> >> Please use 'unsigned' rather than 'bool' (due to MSVC packing rules). >> >> @@ -2790,7 +2791,7 @@ >> >> BinaryOperator(Expr *lhs, Expr *rhs, Opcode opc, QualType ResTy, >> ExprValueKind VK, ExprObjectKind OK, >> - SourceLocation opLoc) >> + SourceLocation opLoc, bool fpContractable = false) >> : Expr(BinaryOperatorClass, ResTy, VK, OK, >> lhs->isTypeDependent() || rhs->isTypeDependent(), >> lhs->isValueDependent() || rhs->isValueDependent(), >> >> I suggest not defaulting fpContractable, so that we always have to think >> about it when building a new BinaryOperator. >> >> Are there tests for the template instantiation cases? >> >> - Doug >> >> >> Cheers, >> Lang. >> >> On Wed, Sep 26, 2012 at 7:50 PM, Hal Finkel <[email protected]> wrote: >> >>> Lang, >>> >>> Great, thanks! >>> >>> Can you please add support for making a*c - b into fma(a, c, -b), etc. >>> This is very important for performance on PPC (because this gets >>> pattern-matched into a single instruction). >>> >>> -Hal >>> >>> On Wed, 26 Sep 2012 17:12:50 -0700 >>> Lang Hames <[email protected]> wrote: >>> >>> > Hi All, >>> > >>> > This patch adds support for the FP_CONTRACT pragma to clang. It adds >>> > a bit to BinaryOperator and CXXOperatorCallExpr to track the >>> > FP_CONTRACT pragma state as each AST node is constructed. Pragma >>> > state is made to follow scope correctly by having an RAII object save >>> > and restore the state when the parser encounters a new compound >>> > statement body. The -ffp-contract option is tested during codegen, >>> > and fmuladd intrinsics (representing fusing opportunities) are output >>> > only if --ffp-contract=on. >>> > >>> > This patch does NOT include warnings/errors for specifying >>> > FP_CONTRACT in invalid contexts that could be confusing (e.g. >>> > introducing FP_CONTRACT at class scope). I think it's reasonable to >>> > start by supporting valid use cases, and add restrictions/diagnostics >>> > in a follow-up patch. >>> > >>> > Comments and feedback most welcome. >>> > >>> > Cheers, >>> > Lang. >>> >>> >>> >>> -- >>> Hal Finkel >>> Postdoctoral Appointee >>> Leadership Computing Facility >>> Argonne National Laboratory >>> >> >> <clang-fp-contract-3.patch> >> _______________________________________________ >> cfe-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >> >> >> > <clang-fp-contract-4.patch> > > >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
