[Bug target/65697] __atomic memory barriers not strong enough for __sync builtins

amacleod at redhat dot com gcc-bugzilla@gcc.gnu.org
Wed May 6 16:26:00 GMT 2015


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65697

--- Comment #52 from Andrew Macleod <amacleod at redhat dot com> ---
(In reply to mwahab from comment #51)

> The mips backend was the only one that stood out as needing some care,
> because the way it uses the memory models (e.g. in function
> mips_process_sync_loop) is a little different from the backends.
> 

Yeah, it looks a bit wonky, but doesn't need anything special when I looked
closer. That 11 and 10 are special overrides on a  couple of patterns, the rest
are just normal memory model values from a specified operand.

Although I did miss a conversion there that has no real effect, but should be
put in place...    I'll add it to my patches.


*** mips.c      2015-05-06 12:15:04.145423200 -0400
--- BAK/mips.c  2015-05-06 12:12:57.265671466 -0400
*************** mips_process_sync_loop (rtx_insn *insn,
*** 13111,13117 ****
        model = MEMMODEL_ACQUIRE;
        break;
      default:
!       model = memmodel_from_int (INTVAL (operands[memmodel_attr]));
      }

    mips_multi_start ();
--- 13111,13117 ----
        model = MEMMODEL_ACQUIRE;
        break;
      default:
!       model = (enum memmodel) INTVAL (operands[memmodel_attr]);
      }

    mips_multi_start ();



More information about the Gcc-bugs mailing list