Skip to content

Commit 668284f

Browse files
committed
[LTO] Add function alias as function instead of data
1 parent b333edd commit 668284f

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

llvm/include/llvm/LTO/legacy/LTOModule.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff 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);

llvm/lib/LTO/LTOModule.cpp

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)