diff options
author | Sjoerd Meijer <sjoerd.meijer@arm.com> | 2016-06-03 15:38:55 +0000 |
---|---|---|
committer | Sjoerd Meijer <sjoerd.meijer@arm.com> | 2016-06-03 15:38:55 +0000 |
commit | 9bc93f6298f32458e5c2afe6571bc72259285a9b (patch) | |
tree | b4f3443045fed78fc17bacda1bf08dc19041c666 /llvm/lib/Target/ARM/ARMSelectionDAGInfo.cpp | |
parent | 2d658703e1bff9cedeac0962bf8fa21c06bae163 (diff) | |
download | bcm5719-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.cpp | 6 |
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) { |