This is the mail archive of the gcc@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] |
I don't think that's true at all. You showed that the walking was incorrect; I don't see you you can now argue that it is correct, regardless of inlining and jump threading.
All one needs to create the cfg that exhibits the problem is multiple exits from the transaction. It's not terribly hard to create such a cfg directly in the source...
Can't believe I forgot about explicit gotos and the like.
Below is a patch fixing the transformation of calls during the TM ipa pass. It walks the CFG instead of the dominator tree.
OK for branch?
* trans-mem.c (ipa_tm_scan_irr_block): Iterate CFG.
(ipa_tm_transform_calls_1): Rename from ipa_tm_transform_calls. Only process one block. (ipa_tm_transform_calls): Iterate through CFG and call helper function.
This part isn't. As we discussed on IRC, you're missing a check for irr_blocks and stopping the iteration then.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |