File tree Expand file tree Collapse file tree 2 files changed +14
-5
lines changed Expand file tree Collapse file tree 2 files changed +14
-5
lines changed Original file line number Diff line number Diff line change @@ -195,7 +195,7 @@ struct LTOModule {
195195
196196 // / Add a function symbol as defined to the list.
197197 void addDefinedFunctionSymbol (ModuleSymbolTable::Symbol Sym);
198- void addDefinedFunctionSymbol (StringRef Name, const Function *F);
198+ void addDefinedFunctionSymbol (StringRef Name, const GlobalValue *F);
199199
200200 // / Add a global symbol from module-level ASM to the defined list.
201201 void addAsmGlobalSymbol (StringRef, lto_symbol_attributes scope);
Original file line number Diff line number Diff line change @@ -406,11 +406,16 @@ void LTOModule::addDefinedFunctionSymbol(ModuleSymbolTable::Symbol Sym) {
406406 Buffer.c_str ();
407407 }
408408
409- const Function *F = cast<Function>(cast<GlobalValue *>(Sym));
410- addDefinedFunctionSymbol (Buffer, F);
409+ auto *GV = cast<GlobalValue *>(Sym);
410+ assert ((isa<Function>(GV) ||
411+ (isa<GlobalAlias>(GV) &&
412+ isa<Function>(cast<GlobalAlias>(GV)->getAliasee ()))) &&
413+ " Not function or function alias" );
414+
415+ addDefinedFunctionSymbol (Buffer, GV);
411416}
412417
413- void LTOModule::addDefinedFunctionSymbol (StringRef Name, const Function *F) {
418+ void LTOModule::addDefinedFunctionSymbol (StringRef Name, const GlobalValue *F) {
414419 // add to list of defined symbols
415420 addDefinedSymbol (Name, F, true );
416421}
@@ -611,7 +616,11 @@ void LTOModule::parseSymbols() {
611616 }
612617
613618 assert (isa<GlobalAlias>(GV));
614- addDefinedDataSymbol (Sym);
619+
620+ if (isa<Function>(cast<GlobalAlias>(GV)->getAliasee ()))
621+ addDefinedFunctionSymbol (Sym);
622+ else
623+ addDefinedDataSymbol (Sym);
615624 }
616625
617626 // make symbols for all undefines
You can’t perform that action at this time.
0 commit comments