When passing a parameter using the 'byval' mechanism, inline code needs to be used
to perform the copy, which may be of lots of memory [*]. It would be good if the fall-back code generated something reasonable, i.e. did the copy in a loop, rather than vast numbers of loads and stores. Add a note about this. Currently target specific code seems to always kick in so this is more of a theoretical issue rather than a practical one now that X86 has been fixed. [*] It's amazing how often people pass mega-byte long arrays by copy... llvm-svn: 118275
This commit is contained in:
parent
b7383e6d80
commit
6c25ca4f2b
|
@ -3283,6 +3283,8 @@ static SDValue getMemcpyLoadsAndStores(SelectionDAG &DAG, DebugLoc dl,
|
|||
|
||||
// Expand memcpy to a series of load and store ops if the size operand falls
|
||||
// below a certain threshold.
|
||||
// TODO: In the AlwaysInline case, if the size is big then generate a loop
|
||||
// rather than maybe a humongous number of loads and stores.
|
||||
const TargetLowering &TLI = DAG.getTargetLoweringInfo();
|
||||
std::vector<EVT> MemOps;
|
||||
bool DstAlignCanChange = false;
|
||||
|
|
Loading…
Reference in New Issue