diff options
author | Palmer Dabbelt <palmer.dabbelt@eecs.berkeley.edu> | 2015-12-25 23:25:55 -0800 |
---|---|---|
committer | Palmer Dabbelt <palmer.dabbelt@eecs.berkeley.edu> | 2015-12-27 19:58:28 -0800 |
commit | cc5321b5a30c2eac394d61d070aea5293ee4a3f9 (patch) | |
tree | 1acff52889cd119c5871e1727c8e11970f5271ec /gcc | |
parent | 4bcd4f57af50b32efafa2088f996ede3142ec77b (diff) | |
download | riscv-gnu-toolchain-cc5321b5a30c2eac394d61d070aea5293ee4a3f9.zip riscv-gnu-toolchain-cc5321b5a30c2eac394d61d070aea5293ee4a3f9.tar.gz riscv-gnu-toolchain-cc5321b5a30c2eac394d61d070aea5293ee4a3f9.tar.bz2 |
Bump GCC to 5.3.0
There was one change required here: support for "MEMMODEL_SYNC_*". This
very long GCC post <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65697>
talks about the formalization of the C++ memory model. It looks like
this is it to allow for some ARM stupidity where they can speculatively
issue some memory operations.
As far as I can tell, the right thing to do here is to just treat the
SYNC versions the same as the non-SYNC versions -- this is the same
thing ia64 and rs600 do. I can't find "MEMMODEL_SYNC" anywhere else
interesting, so there might be some flag to set to avoid doing this, but
I couldn't find it.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/gcc/config/riscv/sync.md | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/gcc/config/riscv/sync.md b/gcc/gcc/config/riscv/sync.md index c4bd8d9..e8c9a7a 100644 --- a/gcc/gcc/config/riscv/sync.md +++ b/gcc/gcc/config/riscv/sync.md @@ -55,12 +55,15 @@ switch (INTVAL (operands[1])) { case MEMMODEL_SEQ_CST: + case MEMMODEL_SYNC_SEQ_CST: case MEMMODEL_ACQ_REL: return "fence rw,rw"; case MEMMODEL_ACQUIRE: + case MEMMODEL_SYNC_ACQUIRE: case MEMMODEL_CONSUME: return "fence r,rw"; case MEMMODEL_RELEASE: + case MEMMODEL_SYNC_RELEASE: return "fence rw,w"; default: gcc_unreachable(); |