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/61893] Constant folding inhibits trapping with -ftrapv Date: Fri, 25 Jul 2014 11:47:00 -0000 [thread overview] Message-ID: <bug-61893-4-nMXWyevdiR@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-61893-4@http.gcc.gnu.org/bugzilla/> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61893 --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Fixing bit-ccp with Index: tree-ssa-ccp.c =================================================================== --- tree-ssa-ccp.c (revision 213040) +++ tree-ssa-ccp.c (working copy) @@ -1456,8 +1456,19 @@ bit_value_unop (enum tree_code code, tre widest_int value, mask; prop_value_t val; - if (rval.lattice_val == UNDEFINED) - return rval; + if (rval.lattice_val == UNDEFINED + /* If the value is fully known constants assume that + earlier simplification failed for a reason, for example + due to -ftrapv. */ + || (rval.lattice_val == CONSTANT + && TREE_CODE (rval.value) == INTEGER_CST + && rval.mask == -1)) + { + val.lattice_val = VARYING; + val.value = NULL_TREE; + val.mask = -1; + return val; + } gcc_assert ((rval.lattice_val == CONSTANT && TREE_CODE (rval.value) == INTEGER_CST) @@ -1492,7 +1503,16 @@ bit_value_binop (enum tree_code code, tr prop_value_t val; if (r1val.lattice_val == UNDEFINED - || r2val.lattice_val == UNDEFINED) + || r2val.lattice_val == UNDEFINED + /* If both values are fully known constants assume that + earlier simplification failed for a reason, for example + due to -ftrapv. */ + || (r1val.lattice_val == CONSTANT + && TREE_CODE (r1val.value) == INTEGER_CST + && r1val.mask == 0 + && r2val.lattice_val == CONSTANT + && TREE_CODE (r2val.value) == INTEGER_CST + && r2val.mask == 0)) { val.lattice_val = VARYING; val.value = NULL_TREE; reveals that expansion produces (insn 5 4 6 (set (reg:SI 4 si) (const_int 1 [0x1])) t.c:7 -1 (nil)) (insn 6 5 7 (set (reg:SI 5 di) (const_int 2147483647 [0x7fffffff])) t.c:7 -1 (nil)) (call_insn/u 7 6 8 (set (reg:SI 0 ax) (call (mem:QI (symbol_ref:DI ("__addvsi3") [flags 0x41]) [0 S1 A8]) (const_int 0 [0]))) t.c:7 -1 (expr_list:REG_EH_REGION (const_int -2147483648 [0xffffffff80000000]) (nil)) (expr_list (use (reg:SI 4 si)) (expr_list (use (reg:SI 5 di)) (nil)))) (insn 8 7 9 (set (reg:SI 86 [ D.1753 ]) (reg:SI 0 ax)) t.c:7 -1 (expr_list:REG_EQUAL (plus:SI (const_int 2147483647 [0x7fffffff]) (const_int 1 [0x1])) (nil))) note the REG_EQUAL note which CSE happily simplifies and substitutes... Index: optabs.c =================================================================== --- optabs.c (revision 213040) +++ optabs.c (working copy) @@ -3985,7 +3985,8 @@ emit_libcall_block_1 (rtx insns, rtx tar } last = emit_move_insn (target, result); - set_dst_reg_note (last, REG_EQUAL, copy_rtx (equiv), target); + if (!equiv_may_trap) + set_dst_reg_note (last, REG_EQUAL, copy_rtx (equiv), target); if (final_dest != target) emit_move_insn (final_dest, target); with that we finally trap with -O2...
next prev parent reply other threads:[~2014-07-25 11:47 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-07-24 9:32 [Bug middle-end/61893] New: " rguenth at gcc dot gnu.org 2014-07-25 10:36 ` [Bug middle-end/61893] " rguenth at gcc dot gnu.org 2014-07-25 11:47 ` rguenth at gcc dot gnu.org [this message] 2014-08-27 9:59 ` rguenth at gcc dot gnu.org 2015-10-22 8:19 ` rguenth at gcc dot gnu.org 2015-10-22 11:44 ` rguenth at gcc dot gnu.org 2015-10-22 11:45 ` rguenth at gcc dot gnu.org 2021-09-13 20:41 ` 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-61893-4-nMXWyevdiR@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).