public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "manu at gcc dot gnu dot org" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug middle-end/36296] bogus uninitialized warning (loop representation) Date: Mon, 18 Aug 2008 23:39:00 -0000 [thread overview] Message-ID: <20080818233816.24850.qmail@sourceware.org> (raw) In-Reply-To: <bug-36296-16207@http.gcc.gnu.org/bugzilla/> ------- Comment #10 from manu at gcc dot gnu dot org 2008-08-18 23:38 ------- (In reply to comment #9) > (In reply to comment #8) > > Please provide a preprocessed reduced testcase as similar to the original as > > possible. > > Here's a similar testcase. Thanks. This is the optimized SSA dump: f () { voidD.39 * pD.1952; intD.0 initD.1951; # BLOCK 2 freq:1 # PRED: ENTRY [100.0%] (fallthru,exec) # SUCC: 3 [100.0%] (fallthru,exec) # BLOCK 3 freq:10000 # PRED: 2 [100.0%] (fallthru,exec) 5 [100.0%] (fallthru,dfs_back,exec) # initD.1951_1 = PHI <0(2), initD.1951_2(5)> # pD.1952_3 = PHI <pD.1952_6(D)(2), pD.1952_4(5)> [/home/manuel/src/pr36296.c : 11] if (initD.1951_1 == 0) goto <bb 4>; else goto <bb 5>; # SUCC: 4 [29.0%] (true,exec) 5 [71.0%] (false,exec) # BLOCK 4 freq:2900 # PRED: 3 [29.0%] (true,exec) [/home/manuel/src/pr36296.c : 13] # SMT.10D.1967_13 = VDEF <SMT.10D.1967_10> { SMT.10D.1967 } pD.1952_7 = fooD.1945 (); # SUCC: 5 [100.0%] (fallthru,exec) # BLOCK 5 freq:10000 # PRED: 3 [71.0%] (false,exec) 4 [100.0%] (fallthru,exec) # initD.1951_2 = PHI <initD.1951_1(3), 2(4)> # pD.1952_4 = PHI <pD.1952_3(3), pD.1952_7(4)> [/home/manuel/src/pr36296.c : 16] # SMT.10D.1967_14 = VDEF <SMT.10D.1967_11> { SMT.10D.1967 } barD.1947 (pD.1952_4); [/home/manuel/src/pr36296.c : 17] goto <bb 3>; # SUCC: 3 [100.0%] (fallthru,dfs_back,exec) } Because we create a PHI node for p in BB 3, we think that p can be used uninitialized. Notice also that we are not able to move the 'if' and the call to foo() out of the infinite loop. This is perhaps a missed optimization. > This is quite strange: if I replace the value 2 by 1 or if I replace foo() by > 0, the warning is no longer displayed. If you replace foo() by 0, then CCP just assumes the p is always 0. In fact, it will remove p altogether, even if you use 'if (init == 2)', thus missing a real uninitialized use. This behaviour is known to hide warnings, both correct and wrong warnings. If I replace the value 2 by 1 I still get the warning in GCC 4.4, so that really sounds strange. Are you sure about that? Anyway, this is a confirmed bug but not easy to fix. -- manu at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|WAITING |NEW Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2008-08-18 23:38:16 date| | Summary|wrong warning about |bogus uninitialized warning |potential uninitialized |(loop representation) |variable | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36296
next prev parent reply other threads:[~2008-08-18 23:39 UTC|newest] Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top 2008-05-22 7:28 [Bug c/36296] New: wrong warning about potential uninitialized variable zimmerma+gcc at loria dot fr 2008-05-22 8:22 ` [Bug middle-end/36296] " pinskia at gcc dot gnu dot org 2008-05-22 8:34 ` vincent at vinc17 dot org 2008-05-22 10:21 ` rguenth at gcc dot gnu dot org 2008-05-22 11:02 ` vincent at vinc17 dot org 2008-05-22 11:23 ` vincent at vinc17 dot org 2008-05-28 7:31 ` pinskia at gcc dot gnu dot org 2008-05-28 8:19 ` vincent at vinc17 dot org 2008-08-18 17:25 ` manu at gcc dot gnu dot org 2008-08-18 22:59 ` vincent at vinc17 dot org 2008-08-18 23:39 ` manu at gcc dot gnu dot org [this message] 2008-08-19 1:33 ` [Bug middle-end/36296] bogus uninitialized warning (loop representation) vincent at vinc17 dot org 2008-08-19 2:34 ` [Bug middle-end/36296] bogus uninitialized warning (loop representation, VRP missed-optimization) manu at gcc dot gnu dot org 2008-12-25 3:03 ` pinskia at gcc dot gnu dot org 2009-02-02 23:44 ` av1474 at comtv dot ru 2009-02-03 0:28 ` manu at gcc dot gnu dot 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=20080818233816.24850.qmail@sourceware.org \ --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).