This is the mail archive of the gcc-patches@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]
Other format: [Raw text]

[tcb]: Add RHS to V_MUST_DEF


After a long discussion with both Diego and Andrew Macleod about how to know what V_MUST_DEF's were killing, it was pretty much decided that this was the way that everyone hated the least (we went through just computing it in a seperate pass, seperate VKILL operands, and a few other ideas).

This patch adds an RHS to V_MUST_DEF that represents the version it is killing.
Whereas before you'd see


a_2 = V_MAY_DEF <a_1>

V_MUST_DEF <a_3>

You'll now see

a_2 = V_MAY_DEF <a_1>

a_3 = V_MUST_DEF <a_2>

This is used in the upcoming patch that implements code sinking.

I originally had an extra TDFA_USE_KOPS flag to control whether to include kills in the immediate uses or not, but Andrew said he didn't want to distinguish it because it would become pointless with his new work on immediate use integration.

DCE had to be slightly modified so that when it kills may/must defs, or a virtual phi) it marks the dead result for renaming, so that the kills get relinked properly. In fact, i'm not quite sure how this didn't cause problems before (since it could change the use operand in a V_MAY_DEF as well when you do this). We must have always been marking these MAY_DEFS as necessary so that we never removed anything in the middle of a chain.

Bootstrapped and regtested on i686-pc-linux-gnu and powerpc-darwin.

Okay for tcb branch?

Attachment: sinker.diff
Description: Binary data


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