diff options
| author | Derek Schuff <dschuff@google.com> | 2016-02-16 21:44:19 +0000 |
|---|---|---|
| committer | Derek Schuff <dschuff@google.com> | 2016-02-16 21:44:19 +0000 |
| commit | f8f8f093aa8ba0ded2ff102d3681df11b8e68c67 (patch) | |
| tree | 91addacae3a431e065724490a0a682bc65fc7d21 /llvm/lib | |
| parent | 106fedab6f7ea001eb95e7f42cfc67b046ec3049 (diff) | |
| download | bcm5719-llvm-f8f8f093aa8ba0ded2ff102d3681df11b8e68c67.tar.gz bcm5719-llvm-f8f8f093aa8ba0ded2ff102d3681df11b8e68c67.zip | |
[WebAssemly] Don't move calls or stores past intervening loads
The register stackifier currently checks for intervening stores (and
loads that may alias them) but doesn't account for the fact that the
instruction being moved may affect intervening loads.
Differential Revision: http://reviews.llvm.org/D17298
llvm-svn: 261014
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp index e23066c1a92..9108b4206cf 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp @@ -129,6 +129,7 @@ static bool IsSafeToMove(const MachineInstr *Def, const MachineInstr *Insert, return false; } + SawStore = Def->isCall() || Def->mayStore(); // Check for memory dependencies and side effects. for (--I; I != D; --I) SawSideEffects |= !I->isSafeToMove(&AA, SawStore); |

