brain thinking memcpy, fingers thinking memset :)
llvm-svn: 65701
This commit is contained in:
parent
789dee38a5
commit
ca05dfef65
|
@ -518,13 +518,13 @@ void CodeGenFunction::EmitAggregateCopy(llvm::Value *DestPtr,
|
|||
llvm::Value *SrcPtr, QualType Ty) {
|
||||
assert(!Ty->isAnyComplexType() && "Shouldn't happen for complex");
|
||||
|
||||
// Aggregate assignment turns into llvm.memset. This is almost valid per
|
||||
// Aggregate assignment turns into llvm.memcpy. This is almost valid per
|
||||
// C99 6.5.16.1p3, which states "If the value being stored in an object is
|
||||
// read from another object that overlaps in anyway the storage of the first
|
||||
// object, then the overlap shall be exact and the two objects shall have
|
||||
// qualified or unqualified versions of a compatible type."
|
||||
//
|
||||
// memset is not defined if the source and destination pointers are exactly
|
||||
// memcpy is not defined if the source and destination pointers are exactly
|
||||
// equal, but other compilers do this optimization, and almost every memcpy
|
||||
// implementation handles this case safely. If there is a libc that does not
|
||||
// safely handle this, we can add a target hook.
|
||||
|
|
Loading…
Reference in New Issue