Hi,
I think the atomic expansion pass is now doing nicely in the ARM backend, so I'd like to move towards making it more generally available by putting it somewhere in lib/CodeGen. After this I'll switch ARM64 over in short order, but I can cope with that part on my own as long as the overall design is sound.
This move probably means the code should have stricter requirements on documentation, naming & cleanliness (in particular any layering violations; I wasn't very sure about putting hooks involving IRBuilder into TargetLowering.h), so I'm asking if people can take another look at it.
As part of the move I've added the necessary hooks for it to be executed directly from opt, and some direct IR-level tests.
Does it look good? Does anyone else have any suggestions on where things should go?
Cheers.
Tim.