Note that with all this mess I'll re-iterate some of my initial thoughts. 1) why not do this C++ (or C) specific stuff in the frontends, maybe at gimplifying/genericization time? That way you wouldn't need to worry about middle-end features but you could rely solely on what C/C++ permit. It is, after all, C++ _frontend_ semantics that we enforce here, in the middle-end, which looks out-of-place.
The front-end, really? After all this going back and forth? After you were all so worried about Ada, and now you're ditching it in favor of handling only C++?
Is the C++ memory model stuff going to be "ready" for 4.7?
No, not if you expect me rewrite things every day.