public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "abel at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug rtl-optimization/51447] [4.4/4.5/4.6/4.7 Regression] global register variable definition incorrectly removed as dead code
Date: Fri, 20 Jan 2012 08:11:00 -0000	[thread overview]
Message-ID: <bug-51447-4-YNhKM4buOP@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-51447-4@http.gcc.gnu.org/bugzilla/>

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51447

Andrey Belevantsev <abel at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |abel at gcc dot gnu.org

--- Comment #9 from Andrey Belevantsev <abel at gcc dot gnu.org> 2012-01-20 07:45:57 UTC ---
(In reply to comment #8)
> For ud_dce it's simplest to add/remove fake edges around it.  For 4.8 it could
> be worthwhile to try adding fake edges around all RTL passes (at least those
> running in cfglayout mode) and see what breaks...

Do you mean just add/remove fake edges in init/fini_dce?  For Jakub's test:

    5 NOTE_INSN_BASIC_BLOCK
    2 r60:DI=di:DI
      REG_DEAD: di:DI
    3 r61:DI=r10:DI
      REG_DEAD: r10:DI
    4 NOTE_INSN_FUNCTION_BEG
    7 bx:DI=r60:DI
      REG_DEAD: r60:DI
    9 r63:DI=L0
   10 clobber [scratch]
   11 clobber [bp:DI]
   12 bp:DI=[r61:DI]
   13 clobber [scratch]
   14 clobber [sp:DI]
   15 sp:DI=[r61:DI+0x8]
      REG_DEAD: r61:DI
   16 use bp:DI
   17 use sp:DI
   18 pc=r63:DI
      REG_DEAD: r63:DI
      REG_NON_LOCAL_GOTO: 0

on top of his patch this results in 

 starting the processing of deferred insns
 ending the processing of deferred insns
 df_analyze called
-df_worklist_dataflow_doublequeue:n_basic_blocks 3 n_edges 1 count 3 (    1)
+df_worklist_dataflow_doublequeue:n_basic_blocks 3 n_edges 2 count 3 (    1)
+df_worklist_dataflow_doublequeue:n_basic_blocks 3 n_edges 2 count 3 (    1)
+df_worklist_dataflow_doublequeue:n_basic_blocks 3 n_edges 2 count 3 (    1)


 bar
@@ -45,7 +47,7 @@ Dataflow summary:
 ;; rd  out     (21)
 0, 1, 2, 4, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23

-( 0 )->[2]->( )
+( 0 )->[2]->( 1 )
 ;; bb 2 artificial_defs: { }
 ;; bb 2 artificial_uses: { u0(6){ d7(bb 2 insn 12) }u1(7){ d9(bb 2 insn 15)
}u2(16){ d11(bb 0 insn -1) }u3(20){ d12(bb 0 insn -1) }}
 ;; lr  in       5 [di] 6 [bp] 7 [sp] 16 [argp] 20 [frame] 39 [r10]
@@ -60,8 +62,8 @@ Dataflow summary:
 3, 7, 9, 24, 25, 26
 ;; rd  kill    (9)
 3, 4, 7, 8, 9, 10, 24, 25, 26
-;; lr  out      3 [bx] 7 [sp] 16 [argp] 20 [frame]
-;; live  out    3 [bx] 7 [sp] 16 [argp] 20 [frame]
+;; lr  out      3 [bx] 6 [bp] 7 [sp] 16 [argp] 20 [frame]
+;; live  out    3 [bx] 6 [bp] 7 [sp] 16 [argp] 20 [frame]
 ;; rd  out     (24)
 0, 1, 2, 3, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26
 ;;  UD chains for artificial uses
@@ -93,7 +95,7 @@ Dataflow summary:
 ;;      reg 20 { d12(bb 0 insn -1) }
 ;;      reg 63 { d26(bb 2 insn 9) }

-( )->[1]->( )
+( 2 )->[1]->( )
 ;; bb 1 artificial_defs: { }
 ;; bb 1 artificial_uses: { u17(3){ }u18(6){ }u19(7){ }u20(20){ }}
 ;; lr  in       3 [bx] 6 [bp] 7 [sp] 20 [frame]

so we get only extra bp in live outs of block 2 and still kill insn 7 (which is
the actual problem).  Do we need bx to appear in live ins of EXIT (those are
empty with or without the patch)?


  parent reply	other threads:[~2012-01-20  7:46 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-07  7:26 [Bug c/51447] New: " pitchumani.s at atmel dot com
2011-12-07 12:43 ` [Bug rtl-optimization/51447] " rguenth at gcc dot gnu.org
2011-12-07 12:57 ` [Bug rtl-optimization/51447] [4.4/4.5/4.6/4.7 Regression] " jakub at gcc dot gnu.org
2011-12-07 13:11 ` jakub at gcc dot gnu.org
2011-12-07 13:49 ` bonzini at gnu dot org
2011-12-07 14:04 ` bonzini at gnu dot org
2011-12-07 14:07 ` jakub at gcc dot gnu.org
2011-12-15 11:45 ` jakub at gcc dot gnu.org
2011-12-15 12:09 ` bonzini at gnu dot org
2011-12-16  8:35 ` jakub at gcc dot gnu.org
2012-01-20  8:11 ` abel at gcc dot gnu.org [this message]
2012-03-13 12:48 ` [Bug rtl-optimization/51447] [4.5/4.6/4.7/4.8 " jakub at gcc dot gnu.org
2012-07-02 10:58 ` rguenth at gcc dot gnu.org
2012-11-11 22:05 ` [Bug rtl-optimization/51447] [4.6/4.7/4.8 " steven at gcc dot gnu.org
2012-11-11 22:12 ` steven at gcc dot gnu.org
2012-11-12 20:22 ` steven at gcc dot gnu.org
2012-11-12 20:23 ` [Bug rtl-optimization/51447] [4.6/4.7 " steven at gcc dot gnu.org
2013-01-20 22:18 ` howarth at nitro dot med.uc.edu
2013-01-21 14:53 ` howarth at nitro dot med.uc.edu
2013-04-12 15:15 ` [Bug rtl-optimization/51447] [4.7 " jakub at gcc dot gnu.org
2013-09-10  7:45 ` matthijs at stdin dot nl
2013-09-10  7:52 ` jakub at gcc dot gnu.org
2014-06-12 13:03 ` rguenth at gcc dot gnu.org
2020-06-10 20:58 ` cvs-commit 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-51447-4-YNhKM4buOP@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: link
Be 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).