Skip to content

Commit

Permalink
LTO: call getRealLinkageName on IRNames before feeding to getGUID
Browse files Browse the repository at this point in the history
Summary: GlobalValue has two getGUID methods: an instance method and a static method. The static method takes a string, which is expected to be what GlobalValue::getRealLinkageName() would return. In LTO.cpp, we were not doing this consistently, sometimes passing an IR name instead. This change makes it so that we call getRealLinkageName() first, making the static getGUID return value consistent with the instance method. Without this change, compiling FileCheck with ThinLTO on Windows fails with numerous undefined symbol errors. With the change, it builds successfully.

Reviewers: pcc, rnk

Reviewed By: pcc

Subscribers: tejohnson, mehdi_amini, llvm-commits

Differential Revision: https://reviews.llvm.org/D31444

llvm-svn: 299268
  • Loading branch information
inglorion committed Mar 31, 2017
1 parent e625d74 commit d6aea71
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions llvm/lib/LTO/LTO.cpp
Expand Up @@ -971,7 +971,8 @@ Error LTO::runThinLTO(AddStreamFn AddStream, NativeObjectCache Cache,
// IRName will be defined if we have seen the prevailing copy of
// this value. If not, no need to preserve any ThinLTO copies.
!Res.second.IRName.empty())
GUIDPreservedSymbols.insert(GlobalValue::getGUID(Res.second.IRName));
GUIDPreservedSymbols.insert(GlobalValue::getGUID(
GlobalValue::getRealLinkageName(Res.second.IRName)));
}

auto DeadSymbols =
Expand All @@ -990,10 +991,11 @@ Error LTO::runThinLTO(AddStreamFn AddStream, NativeObjectCache Cache,
// partition (and we can't get the GUID).
if (Res.second.IRName.empty())
continue;
auto GUID = GlobalValue::getGUID(Res.second.IRName);
auto GUID = GlobalValue::getGUID(
GlobalValue::getRealLinkageName(Res.second.IRName));
// Mark exported unless index-based analysis determined it to be dead.
if (!DeadSymbols.count(GUID))
ExportedGUIDs.insert(GlobalValue::getGUID(Res.second.IRName));
ExportedGUIDs.insert(GUID);
}

auto isPrevailing = [&](GlobalValue::GUID GUID,
Expand Down

0 comments on commit d6aea71

Please sign in to comment.