summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/PeepholeOptimizer.cpp
diff options
context:
space:
mode:
authorMichael Kuperstein <michael.m.kuperstein@intel.com>2015-08-12 10:14:58 +0000
committerMichael Kuperstein <michael.m.kuperstein@intel.com>2015-08-12 10:14:58 +0000
commitbc7f99a3ab802f4f5be6f3b0a97df03e6bfd3375 (patch)
treed38ad79676f320526b91fdd49d00f02429204ff4 /llvm/lib/CodeGen/PeepholeOptimizer.cpp
parentc5746865296fc07bb7f985d44d14ce780ac12086 (diff)
downloadbcm5719-llvm-bc7f99a3ab802f4f5be6f3b0a97df03e6bfd3375.tar.gz
bcm5719-llvm-bc7f99a3ab802f4f5be6f3b0a97df03e6bfd3375.zip
[X86] Allow x86 call frame optimization to fold more loads into pushes
This abstracts away the test for "when can we fold across a MachineInstruction" into the the MI interface, and changes call-frame optimization use the same test the peephole optimizer users. Differential Revision: http://reviews.llvm.org/D11945 llvm-svn: 244729
Diffstat (limited to 'llvm/lib/CodeGen/PeepholeOptimizer.cpp')
-rw-r--r--llvm/lib/CodeGen/PeepholeOptimizer.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/PeepholeOptimizer.cpp b/llvm/lib/CodeGen/PeepholeOptimizer.cpp
index 3dc73bac5b8..4d593543806 100644
--- a/llvm/lib/CodeGen/PeepholeOptimizer.cpp
+++ b/llvm/lib/CodeGen/PeepholeOptimizer.cpp
@@ -1234,9 +1234,9 @@ bool PeepholeOptimizer::runOnMachineFunction(MachineFunction &MF) {
if (MI->isDebugValue())
continue;
- // If there exists an instruction which belongs to the following
- // categories, we will discard the load candidates.
- if (MI->mayStore() || MI->isCall() || MI->hasUnmodeledSideEffects())
+ // If we run into an instruction we can't fold across, discard
+ // the load candidates.
+ if (MI->isLoadFoldBarrier())
FoldAsLoadDefCandidates.clear();
if (MI->isPosition() || MI->isPHI() || MI->isImplicitDef() ||
OpenPOWER on IntegriCloud