mirror of
https://github.com/RPCS3/llvm.git
synced 2024-11-28 22:20:43 +00:00
LangRef: Add a Rationale for volatile rules.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174007 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2acfb179fc
commit
946317d07b
@ -1085,6 +1085,16 @@ llvm.memcpy or llvm.memmove intrinsics even when those intrinsics are
|
||||
flagged volatile. Likewise, the backend should never split or merge
|
||||
target-legal volatile load/store instructions.
|
||||
|
||||
.. admonition:: Rationale
|
||||
|
||||
Platforms may rely on volatile loads and stores of natively supported
|
||||
data width to be executed as single instruction. For example, in C
|
||||
this holds for an l-value of volatile primitive type with native
|
||||
hardware support, but not necessarily for aggregate types. The
|
||||
frontend upholds these expectations, which are intentionally
|
||||
unspecified in the IR. The rules above ensure that IR transformation
|
||||
do not violate the frontend's contract with the language.
|
||||
|
||||
.. _memmodel:
|
||||
|
||||
Memory Model for Concurrent Operations
|
||||
|
Loading…
Reference in New Issue
Block a user