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

Re: 0005-Search-all-dominated-blocks-for-expressions-to-hoist.patch

On 7/16/10 10:37 PM, Jeff Law wrote:
On 07/15/10 13:22, Maxim Kuvyrkov wrote:
On 7/15/10 8:06 PM, Jeff Law wrote:
? See the e->flags & EDGE_ABNORMAL test prior to removing elements of
trapping_expr from antloc or transp.

I missed that point that we should avoid emitting anything at the ends of basic blocks with abnormal edges.

Is the attached patch OK?
Yes as long as it passes the usual bootstrap & regression test.

Well, after the regtest I now know the exact purpose of transpout. It is to avoid moving memory references across calls that can clobber memory. Without the checks done in compute_transpout a memory reference can be moved along an abnormal edge and, when that happens, it gets placed /before/ the call.

Similarly, we want to avoid hoisting potentially trapping expressions along abnormal edges as that would allow the trap to happen prematurely.

Jeff, I'm sorry this is taking so long; would you please review this incarnation of the patch.

Bootstrapped and tested on i686-linux (biarch) and arm-linux.


Maxim Kuvyrkov
(650) 331-3385 x724

Attachment: 0002-Replace-transpout.ChangeLog
Description: Text document

Attachment: 0002-Replace-transpout.patch
Description: Text document

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