On Wed, 27 Jul 2016, Prathamesh Kulkarni wrote: > On 26 July 2016 at 17:41, Richard Biener <rguent...@suse.de> wrote: > > On Mon, 25 Jul 2016, Prathamesh Kulkarni wrote: > > > >> Hi, > >> The attached patch tries to fix PR71078. > >> I am not sure if I have got the converts right. > >> I put (convert? @0) and (convert1? (abs @1)) > >> to match for cases when operands's types may > >> be different from outermost type like in pr71078-3.c > > > > Types of RDIV_EXPR have to be the same so as you have a > > match on @0 the converts need to be either both present > > or not present. > > > > + (if (FLOAT_TYPE_P (type) > > > > as you special-case several types below please use SCALAR_FLOAT_TYPE_P > > here. > > > > + && ! HONOR_NANS (type) > > + && ! HONOR_INFINITIES (type)) > > + (switch > > + (if (type == float_type_node) > > + (BUILT_IN_COPYSIGNF { build_one_cst (type); } (convert @0))) > > > > please use if (types_match (type, float_type_node)) instead of > > pointer equality. I _think_ you can do better here by using > > IFN_COPYSIGN but possibly only so if the target supports it. > > Richard - this seems to be the first pattern in need of > > generating a builtin where no other was there to match the type > > to - any idea how we can safely use the internal function here? > > I see those do not have an expander that would fall back to > > expanding the regular builtin, correct? > > > > Please place the pattern next to > > > > /* Optimize -A / A to -1.0 if we don't care about > > NaNs or Infinities. */ > > (simplify > > (rdiv:C @0 (negate @0)) > > (if (FLOAT_TYPE_P (type) > > && ! HONOR_NANS (type) > > && ! HONOR_INFINITIES (type)) > > { build_minus_one_cst (type); })) > > > > where it logically belongs. > Hi, > Is this version OK ? > Bootstrap + test in progress on x86_64-unknown-linux-gnu
Ok. Thanks, Richard. > > Thanks, > Prathamesh > > > > Thanks, > > Richard. > > > >> test-case (included in patch). > >> Bootstrap+test in progress on x86_64-unknown-linux-gnu. > >> > >> Thanks, > >> Prathamesh > >> > > > > -- > > Richard Biener <rguent...@suse.de> > > SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB > > 21284 (AG Nuernberg) > -- Richard Biener <rguent...@suse.de> SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)