diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2013-01-16 08:10:21 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2013-01-16 08:10:21 +0100 |
commit | 88e784e6c2430ffebd0afd3a31ab6b1f0f5f3ab0 (patch) | |
tree | 9477e573e8737008d7fa38034cbb5298d49d4610 /gcc | |
parent | 5147bf6a236993578d316dfe7c7e7182da1cdf90 (diff) | |
download | gcc-88e784e6c2430ffebd0afd3a31ab6b1f0f5f3ab0.zip gcc-88e784e6c2430ffebd0afd3a31ab6b1f0f5f3ab0.tar.gz gcc-88e784e6c2430ffebd0afd3a31ab6b1f0f5f3ab0.tar.bz2 |
emit-rtl.c (need_atomic_barrier_p): Mask memory model argument with MEMMODEL_MASK before comparing with MEMMODEL_*...
* emit-rtl.c (need_atomic_barrier_p): Mask memory model argument
with MEMMODEL_MASK before comparing with MEMMODEL_* memory types.
* optabs.c (maybe_emit_sync_lock_test_and_set): Ditto.
(expand_mem_thread_fence): Ditto.
(expand_mem_signal_fence): Ditto.
(expand_atomic_load): Ditto.
(expand_atomic_store): Ditto.
From-SVN: r195228
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 14 | ||||
-rw-r--r-- | gcc/emit-rtl.c | 2 | ||||
-rw-r--r-- | gcc/optabs.c | 16 |
3 files changed, 21 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6f7441e..1f66518 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2013-01-15 Uros Bizjak <ubizjak@gmail.com> + + * emit-rtl.c (need_atomic_barrier_p): Mask memory model argument + with MEMMODEL_MASK before comparing with MEMMODEL_* memory types. + * optabs.c (maybe_emit_sync_lock_test_and_set): Ditto. + (expand_mem_thread_fence): Ditto. + (expand_mem_signal_fence): Ditto. + (expand_atomic_load): Ditto. + (expand_atomic_store): Ditto. + 2013-01-16 Alexandre Oliva <aoliva@redhat.com> PR rtl-optimization/55547 @@ -120,8 +130,8 @@ 2013-01-14 Tejas Belagod <tejas.belagod@arm.com> - * config/aarch64/aarch64-simd.md (*aarch64_simd_ld1r<mode>): New. - * config/aarch64/iterators.md (VALLDI): New. + * config/aarch64/aarch64-simd.md (*aarch64_simd_ld1r<mode>): New. + * config/aarch64/iterators.md (VALLDI): New. 2012-01-14 Uros Bizjak <ubizjak@gmail.com> Andi Kleen <ak@linux.intel.com> diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 2987bc9..f997e5d 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -6019,7 +6019,7 @@ insn_file (const_rtx insn) bool need_atomic_barrier_p (enum memmodel model, bool pre) { - switch (model) + switch (model & MEMMODEL_MASK) { case MEMMODEL_RELAXED: case MEMMODEL_CONSUME: diff --git a/gcc/optabs.c b/gcc/optabs.c index e637a1e..8a3d3a9 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -7008,9 +7008,9 @@ maybe_emit_sync_lock_test_and_set (rtx target, rtx mem, rtx val, exists, and the memory model is stronger than acquire, add a release barrier before the instruction. */ - if (model == MEMMODEL_SEQ_CST - || model == MEMMODEL_RELEASE - || model == MEMMODEL_ACQ_REL) + if ((model & MEMMODEL_MASK) == MEMMODEL_SEQ_CST + || (model & MEMMODEL_MASK) == MEMMODEL_RELEASE + || (model & MEMMODEL_MASK) == MEMMODEL_ACQ_REL) expand_mem_thread_fence (model); if (icode != CODE_FOR_nothing) @@ -7388,7 +7388,7 @@ expand_mem_thread_fence (enum memmodel model) { if (HAVE_mem_thread_fence) emit_insn (gen_mem_thread_fence (GEN_INT (model))); - else if (model != MEMMODEL_RELAXED) + else if ((model & MEMMODEL_MASK) != MEMMODEL_RELAXED) { if (HAVE_memory_barrier) emit_insn (gen_memory_barrier ()); @@ -7412,7 +7412,7 @@ expand_mem_signal_fence (enum memmodel model) { if (HAVE_mem_signal_fence) emit_insn (gen_mem_signal_fence (GEN_INT (model))); - else if (model != MEMMODEL_RELAXED) + else if ((model & MEMMODEL_MASK) != MEMMODEL_RELAXED) { /* By default targets are coherent between a thread and the signal handler running on the same thread. Thus this really becomes a @@ -7467,7 +7467,7 @@ expand_atomic_load (rtx target, rtx mem, enum memmodel model) target = gen_reg_rtx (mode); /* For SEQ_CST, emit a barrier before the load. */ - if (model == MEMMODEL_SEQ_CST) + if ((model & MEMMODEL_MASK) == MEMMODEL_SEQ_CST) expand_mem_thread_fence (model); emit_move_insn (target, mem); @@ -7513,7 +7513,7 @@ expand_atomic_store (rtx mem, rtx val, enum memmodel model, bool use_release) if (maybe_expand_insn (icode, 2, ops)) { /* lock_release is only a release barrier. */ - if (model == MEMMODEL_SEQ_CST) + if ((model & MEMMODEL_MASK) == MEMMODEL_SEQ_CST) expand_mem_thread_fence (model); return const0_rtx; } @@ -7540,7 +7540,7 @@ expand_atomic_store (rtx mem, rtx val, enum memmodel model, bool use_release) emit_move_insn (mem, val); /* For SEQ_CST, also emit a barrier after the store. */ - if (model == MEMMODEL_SEQ_CST) + if ((model & MEMMODEL_MASK) == MEMMODEL_SEQ_CST) expand_mem_thread_fence (model); return const0_rtx; |