1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-18 10:32:48 +02:00

LangRef: mention MSan's problem with speculative conditional branches.

Summary:
This short blurb aims to disallow optimizations like we had to revert
(under MSan) in
  https://reviews.llvm.org/D21165
  https://bugs.llvm.org/show_bug.cgi?id=28054
  https://reviews.llvm.org/D67205

Reviewers: vitalybuka, efriedma

Subscribers: llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D67244

llvm-svn: 371461
This commit is contained in:
Evgeniy Stepanov 2019-09-09 22:24:57 +00:00
parent 2d66954f1a
commit cb123715ba

View File

@ -3245,6 +3245,17 @@ match what was already there. However, a store *to* an undefined
location could clobber arbitrary memory, therefore, it has undefined
behavior.
**MemorySanitizer**, a detector of uses of uninitialized memory,
defines a branch with condition that depends on an undef value (or
certain other values, like e.g. a result of a load from heap-allocated
memory that has never been stored to) to have an externally visible
side effect. For this reason functions with *sanitize_memory*
attribute are not allowed to produce such branches "out of thin
air". More strictly, an optimization that inserts a conditional branch
is only valid if in all executions where the branch condition has at
least one undefined bit, the same branch condition is evaluated in the
input IR as well.
.. _poisonvalues:
Poison Values