summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/MachineInstr.cpp
diff options
context:
space:
mode:
authorAlex Bradbury <asb@lowrisc.org>2017-11-08 20:19:16 +0000
committerAlex Bradbury <asb@lowrisc.org>2017-11-08 20:19:16 +0000
commitfa18b9e73cbe20462e8a8ac3fa95df826adc7b3d (patch)
treef343d17c0572d9b2f9f0a692558e64734fad06d9 /llvm/lib/CodeGen/MachineInstr.cpp
parent78a770402afd19f69a18161c637df6af05e5815e (diff)
downloadbcm5719-llvm-fa18b9e73cbe20462e8a8ac3fa95df826adc7b3d.tar.gz
bcm5719-llvm-fa18b9e73cbe20462e8a8ac3fa95df826adc7b3d.zip
Set hasSideEffects=0 for PHI and fix affected passes
Previously, hasSideEffects was ? for TargetOpcode::PHI and would be inferred as 1. D37065 sets the previously inferred properties explicitly. This patch sets hasSideEffects=0 for PHI, as it is for G_PHI. MachineInstr::isSafeToMove has been updated so it still returns false for PHI. Additionally, HexagonBitSimplify relied on a PHI node having the hasUnmodeledSideEffects property. This patch fixes that assumption. Differential Revision: https://reviews.llvm.org/D37097 llvm-svn: 317721
Diffstat (limited to 'llvm/lib/CodeGen/MachineInstr.cpp')
-rw-r--r--llvm/lib/CodeGen/MachineInstr.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/MachineInstr.cpp b/llvm/lib/CodeGen/MachineInstr.cpp
index 2c81218f8f6..478a92e22fc 100644
--- a/llvm/lib/CodeGen/MachineInstr.cpp
+++ b/llvm/lib/CodeGen/MachineInstr.cpp
@@ -1686,7 +1686,7 @@ bool MachineInstr::isSafeToMove(AliasAnalysis *AA, bool &SawStore) const {
// Treat volatile loads as stores. This is not strictly necessary for
// volatiles, but it is required for atomic loads. It is not allowed to move
// a load across an atomic load with Ordering > Monotonic.
- if (mayStore() || isCall() ||
+ if (mayStore() || isCall() || isPHI() ||
(mayLoad() && hasOrderedMemoryRef())) {
SawStore = true;
return false;
OpenPOWER on IntegriCloud