diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-05-08 17:12:57 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-05-08 17:12:57 +0000 | 
| commit | c46e6a5940c50058e00c0c5f9123fd82e338d29a (patch) | |
| tree | 89a719d723035c54a190b1f81d329834f1f93336 /lib/Transforms/Utils/ValueMapper.cpp | |
| parent | 148779df305667b6942fee7e758fdf81a6498f38 (diff) | |
Notes
Diffstat (limited to 'lib/Transforms/Utils/ValueMapper.cpp')
| -rw-r--r-- | lib/Transforms/Utils/ValueMapper.cpp | 17 | 
1 files changed, 12 insertions, 5 deletions
diff --git a/lib/Transforms/Utils/ValueMapper.cpp b/lib/Transforms/Utils/ValueMapper.cpp index f77c10b6dd473..84d89f103a2fd 100644 --- a/lib/Transforms/Utils/ValueMapper.cpp +++ b/lib/Transforms/Utils/ValueMapper.cpp @@ -121,6 +121,8 @@ public:    void addFlags(RemapFlags Flags); +  void remapGlobalObjectMetadata(GlobalObject &GO); +    Value *mapValue(const Value *V);    void remapInstruction(Instruction *I);    void remapFunction(Function &F); @@ -802,6 +804,7 @@ void Mapper::flush() {      switch (E.Kind) {      case WorklistEntry::MapGlobalInit:        E.Data.GVInit.GV->setInitializer(mapConstant(E.Data.GVInit.Init)); +      remapGlobalObjectMetadata(*E.Data.GVInit.GV);        break;      case WorklistEntry::MapAppendingVar: {        unsigned PrefixSize = AppendingInits.size() - E.AppendingGVNumNewMembers; @@ -892,6 +895,14 @@ void Mapper::remapInstruction(Instruction *I) {    I->mutateType(TypeMapper->remapType(I->getType()));  } +void Mapper::remapGlobalObjectMetadata(GlobalObject &GO) { +  SmallVector<std::pair<unsigned, MDNode *>, 8> MDs; +  GO.getAllMetadata(MDs); +  GO.clearMetadata(); +  for (const auto &I : MDs) +    GO.addMetadata(I.first, *cast<MDNode>(mapMetadata(I.second))); +} +  void Mapper::remapFunction(Function &F) {    // Remap the operands.    for (Use &Op : F.operands()) @@ -899,11 +910,7 @@ void Mapper::remapFunction(Function &F) {        Op = mapValue(Op);    // Remap the metadata attachments. -  SmallVector<std::pair<unsigned, MDNode *>, 8> MDs; -  F.getAllMetadata(MDs); -  F.clearMetadata(); -  for (const auto &I : MDs) -    F.addMetadata(I.first, *cast<MDNode>(mapMetadata(I.second))); +  remapGlobalObjectMetadata(F);    // Remap the argument types.    if (TypeMapper)  | 
