https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86497
Bug ID: 86497 Summary: Regression for x!=x Product: gcc Version: 8.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: no...@turm-lahnstein.de Target Milestone: --- When compiling bool is_nan1(double x){ return x!=x; } with g++-8.1 -O3 the resulting assembler (https://godbolt.org/g/BBFM3Q) is _Z7is_nan1d: ucomisd %xmm0, %xmm0 movl $1, %edx setne %al cmovp %edx, %eax ret However, for version 7.3 the result was (https://godbolt.org/g/tR69jf) better: _Z7is_nan1d: ucomisd %xmm0, %xmm0 setp %al ret Also for 8.1 -Os is the assembler somewhat strange: _Z7is_nan1d: ucomisd %xmm0, %xmm0 movb $1, %al jp .L2 setne %al