This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: INSN_CODE_NUMBER of INT_MAX
- To: jh at suse dot cz (Jan Hubicka)
- Subject: Re: INSN_CODE_NUMBER of INT_MAX
- From: Joern Rennecke <amylaar at redhat dot com>
- Date: Fri, 27 Jul 2001 19:31:16 +0100 (BST)
- Cc: amylaar at redhat dot com (Joern Rennecke), jh at suse dot cz (Jan Hubicka),rth at redhat dot com (Richard Henderson),kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner), gcc at gcc dot gnu dot org
> 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)