diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2013-01-13 20:06:54 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2013-01-13 20:06:54 +0100 |
commit | 45805f17035ea374047d014014527ed642bbcd65 (patch) | |
tree | b14e06c940459c48296503f40eeb5351935ba7fd | |
parent | 9d60be386676d883d4a8bd2feaace130fb905a0f (diff) | |
download | gcc-45805f17035ea374047d014014527ed642bbcd65.zip gcc-45805f17035ea374047d014014527ed642bbcd65.tar.gz gcc-45805f17035ea374047d014014527ed642bbcd65.tar.bz2 |
sync.md (mem_thread_fence): Mask operands[0] with MEMMODEL_MASK to determine memory model.
* config/i386/sync.md (mem_thread_fence): Mask operands[0] with
MEMMODEL_MASK to determine memory model.
(atomic_store<mode>): Ditto from operands[2].
* config/i386/i386.c (ix86_memmodel_check): Declare "strong" as bool.
From-SVN: r195137
-rw-r--r-- | gcc/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 2 | ||||
-rw-r--r-- | gcc/config/i386/sync.md | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 2 |
4 files changed, 15 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 59a16bb..853c2d7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,8 +1,14 @@ +2013-01-13 Uros Bizjak <ubizjak@gmail.com> + + * config/i386/sync.md (mem_thread_fence): Mask operands[0] with + MEMMODEL_MASK to determine memory model. + (atomic_store<mode>): Ditto from operands[2]. + * config/i386/i386.c (ix86_memmodel_check): Declare "strong" as bool. + 2013-01-13 Jakub Jelinek <jakub@redhat.com> PR fortran/55935 - * gimple-fold.c (get_symbol_constant_value): Call - unshare_expr. + * gimple-fold.c (get_symbol_constant_value): Call unshare_expr. (fold_gimple_assign): Don't call unshare_expr here. (fold_ctor_reference): Call unshare_expr. @@ -61,7 +67,7 @@ 2013-01-10 Richard Sandiford <rdsandiford@googlemail.com> - Update copyright years + Update copyright years. 2013-01-10 Vladimir Makarov <vmakarov@redhat.com> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 723c654..4f778c1 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -42082,7 +42082,7 @@ static unsigned HOST_WIDE_INT ix86_memmodel_check (unsigned HOST_WIDE_INT val) { unsigned HOST_WIDE_INT model = val & MEMMODEL_MASK; - unsigned HOST_WIDE_INT strong; + bool strong; if (val & ~(unsigned HOST_WIDE_INT)(IX86_HLE_ACQUIRE|IX86_HLE_RELEASE |MEMMODEL_MASK) diff --git a/gcc/config/i386/sync.md b/gcc/config/i386/sync.md index a2ea7b2..83198b9 100644 --- a/gcc/config/i386/sync.md +++ b/gcc/config/i386/sync.md @@ -101,9 +101,11 @@ [(match_operand:SI 0 "const_int_operand")] ;; model "" { + enum memmodel model = (enum memmodel) (INTVAL (operands[0]) & MEMMODEL_MASK); + /* Unless this is a SEQ_CST fence, the i386 memory model is strong enough not to require barriers of any kind. */ - if (INTVAL (operands[0]) == MEMMODEL_SEQ_CST) + if (model == MEMMODEL_SEQ_CST) { rtx (*mfence_insn)(rtx); rtx mem; @@ -200,7 +202,7 @@ UNSPEC_MOVA))] "" { - enum memmodel model = (enum memmodel) INTVAL (operands[2]); + enum memmodel model = (enum memmodel) (INTVAL (operands[2]) & MEMMODEL_MASK); if (<MODE>mode == DImode && !TARGET_64BIT) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 67671a8..f567a72 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -52,7 +52,7 @@ 2013-01-10 Vladimir Makarov <vmakarov@redhat.com> - PR rtl-optimization/pr55672 + PR rtl-optimization/55672 * gcc.target/i386/pr55672.c: New. 2013-01-10 Jeff Law <law@redhat.com> |