diff options
Diffstat (limited to 'lib/Transforms/Scalar/MemCpyOptimizer.cpp')
| -rw-r--r-- | lib/Transforms/Scalar/MemCpyOptimizer.cpp | 10 | 
1 files changed, 10 insertions, 0 deletions
| diff --git a/lib/Transforms/Scalar/MemCpyOptimizer.cpp b/lib/Transforms/Scalar/MemCpyOptimizer.cpp index 33b5f9df5a27..3eea3d4e27ae 100644 --- a/lib/Transforms/Scalar/MemCpyOptimizer.cpp +++ b/lib/Transforms/Scalar/MemCpyOptimizer.cpp @@ -750,6 +750,16 @@ bool MemCpyOpt::performCallSlotOptzn(Instruction *cpy,    // its dependence information by changing its parameter.    MD->removeInstruction(C); +  // Update AA metadata +  // FIXME: MD_tbaa_struct and MD_mem_parallel_loop_access should also be +  // handled here, but combineMetadata doesn't support them yet +  unsigned KnownIDs[] = { +    LLVMContext::MD_tbaa, +    LLVMContext::MD_alias_scope, +    LLVMContext::MD_noalias, +  }; +  combineMetadata(C, cpy, KnownIDs); +    // Remove the memcpy.    MD->removeInstruction(cpy);    ++NumMemCpyInstr; | 
