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

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
This exhibits the same problem:

namespace foo
{
  inline double
  abs(double __x)
  { return __builtin_fabs(__x); }
}
using foo::abs;

#include <cstdlib>

int
wrap_abs (int x)
{
  return std::abs (x) + std::abs(x);
}

This doesn't seem like a libstdc++ issue, firstly because <math.h> is required
to define additional overloads, secondly because adding an overload should not
affect how calls to ::abs(int) get compiled, and thirdly because the same thing
happens with the foo::abs(double) overload above and that's nothing to do with
libstdc++.

Also, the code above gives the same result for GCC 5 and GCC 6, so all that
changed in libstdc++ is that we started defining the overloads in <math.h> that
are required by the standard, which for some reason trigger whatever is
happening here.

Reply via email to