This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: RFC: extend cprop_hardreg into a global pass
- From: "Bin.Cheng" <amker dot cheng at gmail dot com>
- To: Steven Bosscher <stevenb dot gcc at gmail dot com>
- Cc: GCC Mailing List <gcc at gcc dot gnu dot org>
- Date: Wed, 1 Aug 2012 11:03:29 +0800
- Subject: Re: RFC: extend cprop_hardreg into a global pass
- References: <CABu31nO9mCdxROkA_x1W+iwEXQRqgMy96v=oPqfbbL1kzve5cA@mail.gmail.com> <CABu31nMsPEc+bDQ4qvaGVKjHp=39vtY3rnyOiBJ=e+-_5XZ1Uw@mail.gmail.com> <CAHFci2_8xfiBV_hWmUBWO51S_r-KGUEGG9u7NN3ShgiXn13FrQ@mail.gmail.com> <CABu31nO8L9JAZc-79ruA3fDrJeKKrZBdP7D4YC7jCm7d7u3rsw@mail.gmail.com> <CAHFci28e4KrWb72XD-mc4XnDF4JP0xoTeZDXPhhw5=OTO_LDpw@mail.gmail.com> <CABu31nMA03aM+MW7zm1=MOZ8-z-F1aBktzm3=1DUCqZ0cdQ7hA@mail.gmail.com>
>> Though the two pseudo-regs
>> are connected by reg-move insn and contains same value afterward,
>> the two live ranges(i.e. allocnos) are conflict with each other, thus IRA
>> cannot allocate same hard register for them.
>
> If two allocnos have the same value, why can't IRA coalesce them?
I don't know IRA very well,by guessing, IRA does not know that the two
allocnos have same value, and they ARE conflict with each other, this
is reflected in build_conflicts. After conflict is built, there is no
chance to coalesce.
>
> And why isn't this overlap copy-propped out before IRA?
>
Because the move insn is generated in cse2 pass and there is no copy
prop pass from cse2 to ira.
Thanks.
--
Best Regards.