https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71078

--- Comment #6 from prathamesh3492 at gcc dot gnu.org ---
(In reply to rguent...@suse.de from comment #5)
> On Thu, 4 Aug 2016, mwahab at gcc dot gnu.org wrote:
> 
> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71078
> > 
> > mwahab at gcc dot gnu.org changed:
> > 
> >            What    |Removed                     |Added
> > ----------------------------------------------------------------------------
> >                  CC|                            |mwahab at gcc dot gnu.org
> > 
> > --- Comment #4 from mwahab at gcc dot gnu.org ---
> > (In reply to prathamesh3492 from comment #3)
> > > Fixed.
> > 
> > The new test pr71078-1.c fails for arm and aarch64 because copysignl isn't 
> > generated for fabsl making the expected output fail to match.
> 
> Is that a non-C99 target?  If so add require-effective-target c99_runtime
dg-require-effective-target c99_runtime didn't work.
Apparently for long double, it is simplified to __builtin_copysign
instead of __builtin_copysignl

Applying pattern match.pd:208, gimple-match.c:1347
gimple_simplified to t2_3 = __builtin_copysign (1.0e+0, x_1(D));
f3 (long double x)
{
  long double t2;
  long double t1;

  <bb 2>:
  t1_2 = ABS_EXPR <x_1(D)>;
  t2_3 = __builtin_copysign (1.0e+0, x_1(D));
  return t2_3;

}

Looks like for arm, long double and double are same
(sizeof (double) == sizeof (long double)).
Since we first match for the double case,
we end up simplifying to __builtin_copysign.

Thanks,
Prathamesh
> 
> Richard.

Reply via email to