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

Reply via email to