public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "rguenth at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug middle-end/67052] New: tree_single_nonnegative_warnv_p and fold_relational_const are inconsistent with NaNs Date: Wed, 29 Jul 2015 09:03:00 -0000 [thread overview] Message-ID: <bug-67052-4@http.gcc.gnu.org/bugzilla/> (raw) https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67052 Bug ID: 67052 Summary: tree_single_nonnegative_warnv_p and fold_relational_const are inconsistent with NaNs Product: gcc Version: 6.0 Status: UNCONFIRMED Keywords: missed-optimization, wrong-code Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: rguenth at gcc dot gnu.org CC: jsm28 at gcc dot gnu.org Target Milestone: --- int main () { double x = __builtin_nan (""); if (x < 0.0) return 1; return 0; } this simplifies via /* Convert ABS_EXPR<x> < 0 to false. */ strict_overflow_p = false; if (code == LT_EXPR && (integer_zerop (arg1) || real_zerop (arg1)) && tree_expr_nonnegative_warnv_p (arg0, &strict_overflow_p)) { if (strict_overflow_p) fold_overflow_warning (("assuming signed overflow does not occur " "when simplifying comparison of " "absolute value and zero"), WARN_STRICT_OVERFLOW_CONDITIONAL); return omit_one_operand_loc (loc, type, constant_boolean_node (false, type), arg0); } (the ABS_EXPR<x> >= 0 case is guarded with ! HONOR_NANS) but not via constant folding in fold_relational_const. bool tree_single_nonnegative_warnv_p (tree t, bool *strict_overflow_p) { ... case REAL_CST: return ! REAL_VALUE_NEGATIVE (TREE_REAL_CST (t)); but static tree fold_relational_const (enum tree_code code, tree type, tree op0, tree op1) { ... /* Handle the cases where either operand is a NaN. */ if (real_isnan (c0) || real_isnan (c1)) { ... case LT_EXPR: case LE_EXPR: case GT_EXPR: case GE_EXPR: case LTGT_EXPR: if (flag_trapping_math) return NULL_TREE; is this a missed optimization or wrong-code?
next reply other threads:[~2015-07-29 9:03 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-07-29 9:03 rguenth at gcc dot gnu.org [this message] 2015-07-29 17:31 ` [Bug middle-end/67052] " joseph at codesourcery dot com 2015-07-29 17:33 ` joseph at codesourcery dot com 2015-07-30 11:16 ` rguenth 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-67052-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).