diff options
| author | Victor Hernandez <vhernandez@apple.com> | 2010-02-06 01:31:55 +0000 |
|---|---|---|
| committer | Victor Hernandez <vhernandez@apple.com> | 2010-02-06 01:31:55 +0000 |
| commit | 827de51a4a5e0c3e5b9a97df45dd57239f737c9d (patch) | |
| tree | 237cb13f28485af81b1291ef53562ca8b9f91da4 /llvm/lib/Linker/LinkModules.cpp | |
| parent | 1b08138152d59c26f81386e05188baf73a3efa8f (diff) | |
| download | bcm5719-llvm-827de51a4a5e0c3e5b9a97df45dd57239f737c9d.tar.gz bcm5719-llvm-827de51a4a5e0c3e5b9a97df45dd57239f737c9d.zip | |
Linker should not remap null operands of metadata
llvm-svn: 95468
Diffstat (limited to 'llvm/lib/Linker/LinkModules.cpp')
| -rw-r--r-- | llvm/lib/Linker/LinkModules.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Linker/LinkModules.cpp b/llvm/lib/Linker/LinkModules.cpp index 279c4bec357..7f441b0a471 100644 --- a/llvm/lib/Linker/LinkModules.cpp +++ b/llvm/lib/Linker/LinkModules.cpp @@ -395,8 +395,12 @@ static Value *RemapOperand(const Value *In, } else if (const MDNode *MD = dyn_cast<MDNode>(In)) { if (MD->isFunctionLocal()) { SmallVector<Value*, 4> Elts; - for (unsigned i = 0, e = MD->getNumOperands(); i != e; ++i) - Elts.push_back(RemapOperand(MD->getOperand(i), ValueMap)); + for (unsigned i = 0, e = MD->getNumOperands(); i != e; ++i) { + if (MD->getOperand(i)) + Elts.push_back(RemapOperand(MD->getOperand(i), ValueMap)); + else + Elts.push_back(NULL); + } Result = MDNode::get(In->getContext(), Elts.data(), MD->getNumOperands()); } else { Result = const_cast<Value*>(In); |

