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

Re: INSN_CODE_NUMBER of INT_MAX


> As delete_trivially_dead_insns removed noop moves REG_EQUAL or not, only

This sounds like a bug.

> remaining noop moves are ones created by combine.  I tend to believe that such
> noop moves have REG_EQUAL notes more or less missleading (as the compiler
> originally believed these do to some computation).

They might finalize some computation.

> Such noop moves definitly confuse register allocator in other way - such
> as increase priorities for the pseudo for no purpose and in a way combine
> updates life information these also can extend register lifetime.
> 
> So still I would suggest to blast such noop moves REG_EQUAL note or not.

Improving one aspect by pessimizing several others doesn't seem like a good
proposition to me.

You could try instead to
 - find if there is a previous set where you can put the REG_EQUAL note
   (i.e. it is in the same set of flow paths and sets the same register,
    and there is no non-trivial REG_EQUAL note already there)
or
 - ignore no-op moves for the purposes of counting lifetimes and the number
   of sets.
or
 - replace them with a different notations, e.g. USEs with a REG_EQUAL note,
   and teach all the passes up to local-alloc to use them (we already use
   this in later passes)


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