Cloning: Reduce complexity of debug info cloning and fix correctness issue.
authorPeter Collingbourne <peter@pcc.me.uk>
Wed, 30 Mar 2016 22:05:13 +0000 (22:05 +0000)
committerPeter Collingbourne <peter@pcc.me.uk>
Wed, 30 Mar 2016 22:05:13 +0000 (22:05 +0000)
commit2bc252acd5625cb0fb167f0d9b3fd05292f7cc47
tree8e978a0b2303515887b0f9a5919a63d37b5072b1
parent1d46d979a9822239b1d30e8acb70726a69487be1
Cloning: Reduce complexity of debug info cloning and fix correctness issue.

Commit r260791 contained an error in that it would introduce a cross-module
reference in the old module. It also introduced O(N^2) complexity in the
module cloner by requiring the entire module to be visited for each function.
Fix both of these problems by avoiding use of the CloneDebugInfoMetadata
function (which is only designed to do intra-module cloning) and cloning
function-attached metadata in the same way that we clone all other metadata.

Differential Revision: http://reviews.llvm.org/D18583

llvm-svn: 264935
llvm/include/llvm/Transforms/Utils/Cloning.h
llvm/lib/Transforms/Utils/CloneFunction.cpp
llvm/lib/Transforms/Utils/CloneModule.cpp
llvm/unittests/Transforms/Utils/Cloning.cpp