diff options
Diffstat (limited to 'llvm/lib/Object/IRSymtab.cpp')
-rw-r--r-- | llvm/lib/Object/IRSymtab.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/llvm/lib/Object/IRSymtab.cpp b/llvm/lib/Object/IRSymtab.cpp index 746b008..9208f90 100644 --- a/llvm/lib/Object/IRSymtab.cpp +++ b/llvm/lib/Object/IRSymtab.cpp @@ -284,9 +284,13 @@ Error Builder::addSymbol(const ModuleSymbolTable &Msymtab, } const GlobalObject *Base = GV->getBaseObject(); - if (!Base) - return make_error<StringError>("Unable to determine comdat of alias!", - inconvertibleErrorCode()); + if (!Base) { + if (isa<GlobalIFunc>(GV)) + Base = cast<GlobalIFunc>(GV)->getResolverFunction(); + if (!Base) + return make_error<StringError>("Unable to determine comdat of alias!", + inconvertibleErrorCode()); + } if (const Comdat *C = Base->getComdat()) { Expected<int> ComdatIndexOrErr = getComdatIndex(C, GV->getParent()); if (!ComdatIndexOrErr) |