summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/ARMSelectionDAGInfo.cpp
diff options
context:
space:
mode:
authorSjoerd Meijer <sjoerd.meijer@arm.com>2016-06-03 15:38:55 +0000
committerSjoerd Meijer <sjoerd.meijer@arm.com>2016-06-03 15:38:55 +0000
commit9bc93f6298f32458e5c2afe6571bc72259285a9b (patch)
treeb4f3443045fed78fc17bacda1bf08dc19041c666 /llvm/lib/Target/ARM/ARMSelectionDAGInfo.cpp
parent2d658703e1bff9cedeac0962bf8fa21c06bae163 (diff)
downloadbcm5719-llvm-9bc93f6298f32458e5c2afe6571bc72259285a9b.tar.gz
bcm5719-llvm-9bc93f6298f32458e5c2afe6571bc72259285a9b.zip
Code size optimisation: do not inline memcpy if this expansion results
in more instructions than the libary call. Differential Revision: http://reviews.llvm.org/D20958 llvm-svn: 271678
Diffstat (limited to 'llvm/lib/Target/ARM/ARMSelectionDAGInfo.cpp')
-rw-r--r--llvm/lib/Target/ARM/ARMSelectionDAGInfo.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMSelectionDAGInfo.cpp b/llvm/lib/Target/ARM/ARMSelectionDAGInfo.cpp
index 6fded9c8ab7..5a3c279ceaa 100644
--- a/llvm/lib/Target/ARM/ARMSelectionDAGInfo.cpp
+++ b/llvm/lib/Target/ARM/ARMSelectionDAGInfo.cpp
@@ -176,6 +176,12 @@ ARMSelectionDAGInfo::EmitTargetCodeForMemcpy(SelectionDAG &DAG, SDLoc dl,
// emit.
unsigned NumMEMCPYs = (NumMemOps + MaxLoadsInLDM - 1) / MaxLoadsInLDM;
+ // Code size optimisation: do not inline memcpy if expansion results in
+ // more instructions than the libary call.
+ if (NumMEMCPYs > 1 && DAG.getMachineFunction().getFunction()->optForMinSize()) {
+ return SDValue();
+ }
+
SDVTList VTs = DAG.getVTList(MVT::i32, MVT::i32, MVT::Other, MVT::Glue);
for (unsigned I = 0; I != NumMEMCPYs; ++I) {
OpenPOWER on IntegriCloud