https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113243
Bug ID: 113243 Summary: mips: Wrong code for pr91323.c Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: xry111 at gcc dot gnu.org Target Milestone: --- In pr91323.c: int __attribute__ ((noinline, noclone)) f3 (float a, float b) { return a < b || a > b; } is compiled to: test(float, float): c.ueq.s $fcc5,$f12,$f14 li $2,1 jr $31 movt $2,$0,$fcc5 for mips64r2, and test(float, float): cmp.ne.s $f12,$f12,$f14 bc1nez $f12,$L4 li $2,1 move $2,$0 $L4: jrc $31 for mips64r6. Both are incorrect because both cmp.ne.s and c.ueq.s do not raise INVALID exception with qNaN inputs, but in C "<" and ">" should raise INVALID for qNaN inputs.