Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: smcallis at gmail dot com
Target Milestone: ---
Created attachment 43409
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43409&action=edit
Reproduction of issue
Code is attached, the gist is that when def
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: smcallis at gmail dot com
Target Milestone: ---
Created attachment 41784
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41784&action=edit
Benchmark code
I've seen
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: smcallis at gmail dot com
Target Milestone: ---
I've seen this in gcc 4.4.7, 4.7.4 4.8.4, 5.4.1, 6.3.0 and 7.1.0
When compiling some simple complex arithmetic:
template
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81478
--- Comment #1 from Sean McAllister ---
Created attachment 41785
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41785&action=edit
cfloat class
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81479
Sean McAllister changed:
What|Removed |Added
Status|UNCONFIRMED |RESOLVED
Resolution|---
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81478
--- Comment #2 from Sean McAllister ---
*** Bug 81479 has been marked as a duplicate of this bug. ***
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81478
--- Comment #4 from Sean McAllister ---
Looking at the assembly for the __mulsc3 function:
<+0>:movaps %xmm0,%xmm10
<+4>:movaps %xmm2,%xmm11
<+8>:movaps %xmm0,%xmm5
<+11>:mulss %xmm3,%xmm10
<+16>:movaps %xmm1,%xmm6
<+19>:mulss %xmm1,%xmm11
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81478
--- Comment #5 from Sean McAllister ---
(In reply to Richard Biener from comment #3)
> Confirmed. It shouldn't be very difficult to do,
> gcc/tree-complex.c:expand_complex_multiplication would need to emit if
> (isnan(rr) || isnan(ri)) .
>
> Un
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81478
--- Comment #6 from Sean McAllister ---
FWIW, it seems the compute, check, re-compute if necessary is what clang does.
Rather than "setp %al" and "jne" on that, they just use the "jp" instruction
directly after ucomiss:
0x004005d5 <+