try_replace_reg improvement

Jeffrey A Law
Tue Oct 26 00:55:00 GMT 1999

  In message < >you write:
  > Hi
  > The try_replace_reg fails when new insn don't match. This limits
  > the constant propagation in i386 a lot, because first operand
  > is not allowed to be register.
  > I've changed it to create/update the REG_EQUIV note to improve CSE2.
  > This seems to improve CPROP a lot.
  > Mon Oct 18 23:51:16 CEST 1999
  > 	* gcse.c (try_replace_reg): Emit and update EQUIV notes
  > 	when neccesary.
This code needs a fair amount of work.  You've created something that is
far more difficult to read and understand than it should be.  I have no 
idea why you made the code as complex as you did.

I don't see the need to handle update of the notes separately when we have
a valid replacement for the insn vs when we do not have a valid replacement.
It seems to me you should always do that replacement.  That will simplify
the code quite a bit.

You also have to be careful about having something like (REG_EQUAL, (reg X))).
A REG_EQUAL should be an expression or constant, not a naked register.

So, while I generally like the idea, I think the code you wrote is, well,
a minor mess and will create notes like (REG_EQUAL, (reg X)), which is a 

Finally, I would expect the vast majority of the time if the insn already has
a note, that it will reference FROM, so I believe calling reg_mentioned_p is
just a waste of time.


More information about the Gcc-patches mailing list