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]

REG_INC notes going AWOL during reload



I'm having a problem with REG_INC notes disappearing during reload
(usually ending up on the wrong insns).  As a consequence, the dead
store code in the second flow pass doesn't work properly and deletes
some useful insns.

For example, consider the insn:

(insn 60 59 62 (parallel[ 
            (set (reg:QI 50)
                (plus:QI (mem:QI (pre_dec:QI (reg/v:QI 37)) 0)
                    (const_int 1)))
            (clobber (reg:CC_NOOV 21 st))
        ] ) 36 {*addqi3_clobber} (nil)
    (expr_list:REG_INC (reg/v:QI 37)
        (expr_list:REG_UNUSED (reg:CC_NOOV 21 st)
            (nil))))

If the first operand for the PLUS is reloaded then we emit a new insn
which has the address side effect, but the reloaded insn still has the
REG_INC note.  

I suppose we should recreate the REG_INC notes during the second flow
pass to fix this problem.  Any other suggestions?

Michael.






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