Well, most of it. The first patch removes two avoidable warnings in rs6000.md. It seems like we could avoid many more of the remaining, but those are harder; this one was obvious.
The second patch is a build error. It has appeared on this list previously, but not yet applied. The third implements the atomic operations (mostly) as described in http://www.rdrop.com/users/paulmck/scalability/paper/N2745r.2011.03.04a.html There are a couple of instances in which the paper doesn't cover the handling of memory_model_consume, and I made a best guess. These are indicated by /* ??? */ markers. I would be obliged if someone could verify what's supposed to happen in these cases. I attempted to handle them conservatively. Tested on ppc64-linux, with a reduced set of languages. I could not get libjava to build for some reason. Missing symbols linking? Please double-check. r~ Richard Henderson (3): rs6000: fix*_trunc insns use nonimmediate_operand ppc-linux: Fix call to _Unwind_SetGRPtr rs6000: Rewrite sync patterns for atomic; expand early. gcc/config/rs6000/rs6000-protos.h | 10 +- gcc/config/rs6000/rs6000.c | 675 +++++++++++++++++----------------- gcc/config/rs6000/rs6000.md | 6 +- gcc/config/rs6000/sync.md | 705 +++++++++-------------------------- libgcc/config/rs6000/linux-unwind.h | 2 +- 5 files changed, 531 insertions(+), 867 deletions(-) -- 1.7.6.4