public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "guihaoc at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/105414] New: constant folding for fmin/max(snan, snan) is wrong Date: Thu, 28 Apr 2022 01:25:36 +0000 [thread overview] Message-ID: <bug-105414-4@http.gcc.gnu.org/bugzilla/> (raw) https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105414 Bug ID: 105414 Summary: constant folding for fmin/max(snan, snan) is wrong Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: guihaoc at gcc dot gnu.org Target Milestone: --- gcc -O0 -fsignaling-nans -D_WANT_SNAN -lm -o fmin fmin.c && ./fmin (snan, snan), fmin: nan gcc -O3 -fsignaling-nans -D_WANT_SNAN -lm -o fmin fmin.c && ./fmin (snan, snan), fmin: snan The fmin(SNaN, SNaN) got different result with O0 and O3. The result should be nan(QNaN) according to C standard. The problem might be at match.pd. fmin(a,a) can't be folded to a when a is SNaN. I propose following patch to fix it. diff --git a/gcc/match.pd b/gcc/match.pd index cad61848daa..2c2efda158b 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -3093,7 +3093,8 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (for minmax (min max FMIN_ALL FMAX_ALL) (simplify (minmax @0 @0) - @0)) + (if(!HONOR_SNANS (@0) || !TREE_REAL_CST (@0).signalling) + @0))) /* min(max(x,y),y) -> y. */ (simplify (min:c (max:c @0 @1) @1)
next reply other threads:[~2022-04-28 1:25 UTC|newest] Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-04-28 1:25 guihaoc at gcc dot gnu.org [this message] 2022-04-28 1:28 ` [Bug tree-optimization/105414] " pinskia at gcc dot gnu.org 2022-04-28 1:31 ` guihaoc at gcc dot gnu.org 2022-04-28 3:07 ` guihaoc at gcc dot gnu.org 2022-04-28 7:07 ` rguenth at gcc dot gnu.org 2022-04-28 7:51 ` jakub at gcc dot gnu.org 2022-04-28 8:10 ` guihaoc at gcc dot gnu.org 2022-04-28 8:18 ` jakub at gcc dot gnu.org 2022-04-29 10:02 ` guihaoc at gcc dot gnu.org 2022-04-29 10:06 ` jakub at gcc dot gnu.org 2022-04-29 12:21 ` rguenth at gcc dot gnu.org 2022-05-11 1:32 ` cvs-commit at gcc dot gnu.org 2022-05-12 2:54 ` guihaoc at gcc dot gnu.org 2022-09-28 10:05 ` cvs-commit at gcc dot gnu.org 2022-11-07 4:48 ` pinskia at gcc dot gnu.org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-105414-4@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).