[Bug tree-optimization/107569] [13 Regression] Failure to optimize std::isfinite since r13-3596
pilarlatiesa at gmail dot com
gcc-bugzilla@gcc.gnu.org
Tue Nov 8 12:59:26 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107569
Pilar Latiesa <pilarlatiesa at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |pilarlatiesa at gmail dot com
--- Comment #1 from Pilar Latiesa <pilarlatiesa at gmail dot com> ---
I also noted that the following testcase:
#include <cmath>
struct TVec { double x, y; };
double dot(TVec const &u, TVec const &v)
{ return u.x * v.x + u.y * v.y; }
double mag(TVec const &u)
{
if (!(dot(u, u) >= 0.0)) __builtin_unreachable();
return std::sqrt(dot(u, u));
}
results in:
(with -O3 -march=skylake --param=vrp1-mode=vrp)
mag(TVec const&):
vmovsd xmm1, QWORD PTR [rdi+8]
vmovsd xmm0, QWORD PTR [rdi]
vmulsd xmm1, xmm1, xmm1
vfmadd132sd xmm0, xmm1, xmm0
vsqrtsd xmm0, xmm0, xmm0
ret
(with -O3 -march=skylake --param=vrp1-mode=ranger)
mag(TVec const&):
vmovsd xmm1, QWORD PTR [rdi+8]
vmovsd xmm0, QWORD PTR [rdi]
vmulsd xmm1, xmm1, xmm1
vfmadd132sd xmm0, xmm1, xmm0
vxorpd xmm1, xmm1, xmm1
vucomisd xmm1, xmm0
ja .L11
vsqrtsd xmm0, xmm0, xmm0
ret
.L11:
jmp sqrt
More information about the Gcc-bugs
mailing list