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]

Re: [trans-mem] PR47690: redirect recursive calls in a clone correctly



(2) Make is_tm_ending_fndecl imply is_ctrl_altering_stmt to force the
     basic block to end.  We're eventually going to split the block there
     during pass_tm_edges, but before that we don't have another edge to
     drop in.  IF there's no other fallout from this change, it's probably
     the easiest change to make.  I'm not sure why else I wouldn't have
     done this in the first place, except for the lack-of-an-edge thing.

Almost. This almost fixes the problem, until I realized that if I change the function call to another (and not recurse), we were still creating an unnecessary clone. This is the problem reported in PR47689.


It turns out the bb_in_TM_region map was not stopping at exit blocks, and including BB's past the commit. So in addition to your suggestion, we need to stop at exit blocks when accumulating the bb_in_TM_region bitmap.

The patch below fixes everything (including PR47689), cleans up things, and is simpler than the last revision. Yay. Twofer patch!

Ok for branch?

Attachment: curr
Description: Text document


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