This is the mail archive of the gcc-patches@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]

Re: [PATCH] Add "Implicit sets" to GCSE's cprop (take 2)


I don't have any more time this afternoon, so I thought I'd 
brain dump here before I go.

Best I can tell, find_reloads is miscompiled.  Diffing .gcse dumps I find

+Implicit set of reg 82 in basic block 384

+Index 114 (hash value 82)
   (set (reg/v:DI 82 [ swapped ])
     (const_int 0 [0x0]))

+GLOBAL CONST-PROP: Replacing reg 82 in insn 3987 with (const_int 0 [0x0])
	bb 393

+GLOBAL CONST-PROP: Replacing reg 82 in insn 4092 with (const_int 0 [0x0])
	bb 398

+GLOBAL CONST-PROP: Replacing reg 82 in insn 4123 with (const_int 0 [0x0])

Basic block 383: first insn 9473, last 4126, prev 382, next 384, loop_depth 0, c
ount 0, freq 0.
Predecessors:  382 (fallthru)
Successors:  384 (fallthru) 390
Registers live at start: (nil)
Registers live at end: (nil)
Invalid sum of outgoing probabilities 0.0%

Basic block 384: first insn 9474, last 10030, prev 383, next 385, loop_depth 0, 
count 0, freq 0.
Predecessors:  383 (fallthru)
Successors:  389 385 (fallthru)
Registers live at start: (nil)
Registers live at end: (nil)
Invalid sum of outgoing probabilities 0.0%


Now, the part that really seems wrong is that block 383 ends with 

(jump_insn 3834 3833 3837 383 0x20000b1b290 (set (pc)
        (if_then_else (eq (reg:DI 2131)
                (const_int 0 [0x0]))
            (label_ref 3852)
            (pc))) 174 {*bcc_normal} (nil)
    (nil))

I can't find register 82 mentioned at all.  The only thing I can
think is that somehow the block indicies are messed up between 
find_implicit_sets and compute_hash_table_work, and I can't think
how that might happen.


r~


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