This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/46183] [4.6 Regression] ICE: in calc_dfs_tree, at dominance.c:396 with -O -fno-dse -fgcse -ftree-pre


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

Richard Guenther <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |NEW
                 CC|                            |stevenb.gcc at gmail dot
                   |                            |com
         AssignedTo|rguenth at gcc dot gnu.org  |unassigned at gcc dot
                   |                            |gnu.org

--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-11-02 13:58:05 UTC ---
RTL cprop leaves us with a not cleaned up CFG (an unreachable block), that
causes dominance computation to ICE.

;; Start of basic block () -> 16
;; bb 16 artificial_defs: { }
;; bb 16 artificial_uses: { u109(6){ }u110(7){ }u111(16){ }u112(20){ }}
;; lr  in        6 [bp] 7 [sp] 16 [argp] 20 [frame] 74
;; lr  use       6 [bp] 7 [sp] 16 [argp] 20 [frame]
;; lr  def       17 [flags]

(code_label 90 87 91 16 14 "" [0 uses])

(note 91 90 92 16 [bb 16] NOTE_INSN_BASIC_BLOCK)

(insn 92 91 93 16 (parallel [
            (set (mem/s/f/j/c:DI (plus:DI (reg/f:DI 20 frame)
                        (const_int -16 [0xfffffffffffffff0])) [0
ap.overflow_arg_area+0 S8 A64])
                (plus:DI (mem/s/f/j/c:DI (plus:DI (reg/f:DI 20 frame)
                            (const_int -16 [0xfffffffffffffff0])) [0
ap.overflow_arg_area+0 S8 A64])
                    (const_int 8 [0x8])))
            (clobber (reg:CC 17 flags))
        ]) t.c:13 253 {*adddi_1}
     (expr_list:REG_UNUSED (reg:CC 17 flags)
        (nil)))
;; End of basic block 16 -> ( 17)
;; lr  out       6 [bp] 7 [sp] 16 [argp] 20 [frame] 74


;; Succ edge  17 [100.0%]  (fallthru)


The solution may be as simple as making sure to remove unreachable blocks
after cprop, but already the exiting

  if (local_cprop_pass ())
    {
      delete_unreachable_blocks ();
      df_analyze ();
    }

has some weird comment in front of it.  Maybe steven remembers what's going
on here.

Not my bug, really only exposed by me.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]