Again, __transactions being barriers and all, I don't think we should
complicate things unnecessarily at this point, since it doesn't happen.
Yes. Based on Richard Guenther's examples, my question was whether your
code (without having actually looked at it ;) ) would also allow
post-dominating loads in nontransactional code to enable hoisting (as in
the __transaction_atomic { if (foo) load; } load case. I believe only
loads within the same transaction should count, and I wasn't sure
whether you were ensuring that (and/or whether a barrier would enforce
this either).
In my patch, post-dominating loads in nontransactional code is fair game
for hoisting, and will get hoisted out. However, tweaking it to make
sure this post-dominating load occurs in a transaction is trivial since
we have a bitmap of all BBs in transactions.