------- Additional Comments From law at redhat dot com 2005-03-02 18:23 ------- Subject: Re: [meta-bug] optimizations that CSE still catches
On Wed, 2005-03-02 at 11:50 +0000, steven at gcc dot gnu dot org wrote: > ------- Additional Comments From steven at gcc dot gnu dot org 2005-03-02 > 11:50 ------- > Here is a nice one: > > Working on insn: > (insn 215 214 216 15 (parallel [ > (set (reg:DI 176) > (ashift:DI (reg:DI 175) > (const_int 3 [0x3]))) > (clobber (reg:CC 17 flags)) > ]) -1 (nil) > (expr_list:REG_EQUAL (mult:DI (reg:DI 174) > (const_int 8 [0x8])) > (nil))) > Trying to fold rtx: > (mult:DI (reg:DI 174) > (const_int 8 [0x8])) > Returning new rtx: > (ashift:DI (reg:DI 174) > (const_int 3 [0x3])) > > Sometimes I just hate REG_EQUAL notes... Am I missing something here? I guess I'm not sure what point you're trying to make. It seems to me that (reg 174) must be equal to (reg 175) for the REG_EQUAL note to be valid. Which means they must either be set from equivalent expressions or we must have a copy insn between them. In the former case (set from equivalent expressions) we should figure out why DOM or PRE didn't catch the redundancy. In the latter case we'd want to see why we didn't copy propagate the copy. [ It's possible the copy occurs due to tree->rtl expansion -- there's still a fair number of ways to get silly copies at that phase. In which case we need to look into ways to eliminate the silly copies. IIRC some come from lameness in the API for some of our conversion routines. ] jeff -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19721