[PATCH] D67399: [ARM] Follow AACPS standard for volatile bitfields

Diogo N. Sampaio via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Sep 10 08:23:49 PDT 2019


dnsampaio added a comment.

@ostannard might prove me wrong, but according to the AACPS:

  When a volatile bit-field is written, and its container does not overlap with any non-bit-field member, its
  container must be read exactly once and written exactly once using the access width appropriate to the
  type of the container. The two accesses are not atomic.

This rule does not define that the load is done if required. It states that it will be read once. It even gives the example that an increment will always perform two reads and one write, bitwidth agnostic. It writes just after:

  Note: Note the volatile access rules apply even when the width and alignment of the bit-field imply that
  the access could be achieved more efficiently using a narrower type. For a write operation the read must
  always occur even if the entire contents of the container will be replaced.

The rationale is to provide a uniform behavior for volatile bitfields independent of their width (as far they do not overlap with non-bitfields).


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D67399/new/

https://reviews.llvm.org/D67399





More information about the cfe-commits mailing list