summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/X86RecognizableInstr.cpp
diff options
context:
space:
mode:
authorMax Kazantsev <max.kazantsev@azul.com>2017-10-11 08:10:43 +0000
committerMax Kazantsev <max.kazantsev@azul.com>2017-10-11 08:10:43 +0000
commit3b81809e06da76b644a842caaccb1591900801e3 (patch)
tree94215c65f7de873daa2948a03d53ddaec4afd763 /llvm/utils/TableGen/X86RecognizableInstr.cpp
parent4a6d5b72af56742e56684d52a2c80068597be4bc (diff)
downloadbcm5719-llvm-3b81809e06da76b644a842caaccb1591900801e3.tar.gz
bcm5719-llvm-3b81809e06da76b644a842caaccb1591900801e3.zip
[GVN] Prevent LoadPRE from hoisting across instructions that don't pass control flow to successors
This patch fixes the miscompile that happens when PRE hoists loads across guards and other instructions that don't always pass control flow to their successors. PRE is now prohibited to hoist across such instructions because there is no guarantee that the load standing after such instruction is still valid before such instruction. For example, a load from under a guard may be invalid before the guard in the following case: int array[LEN]; ... guard(0 <= index && index < LEN); use(array[index]); Differential Revision: https://reviews.llvm.org/D37460 llvm-svn: 315440
Diffstat (limited to 'llvm/utils/TableGen/X86RecognizableInstr.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud