Skip to content

Commit

Permalink
Ignore llvm.* globals.
Browse files Browse the repository at this point in the history
It is not clear if llvm.global_ctors should or should not be in llvm.metadata,
but in practice it is not and we need to ignore it for LTO.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212351 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
espindola committed Jul 4, 2014
1 parent bb5f622 commit 8089fee
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 6 deletions.
9 changes: 3 additions & 6 deletions lib/Object/IRObjectFile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -238,16 +238,13 @@ uint32_t IRObjectFile::getSymbolFlags(DataRefImpl Symb) const {
if (GV->hasLinkOnceLinkage() || GV->hasWeakLinkage())
Res |= BasicSymbolRef::SF_Weak;

if (auto *Var = dyn_cast<GlobalVariable>(GV)) {
if (GV->getName().startswith("llvm."))
Res |= BasicSymbolRef::SF_FormatSpecific;
else if (auto *Var = dyn_cast<GlobalVariable>(GV)) {
if (Var->getSection() == StringRef("llvm.metadata"))
Res |= BasicSymbolRef::SF_FormatSpecific;
}

if (auto *F = dyn_cast<Function>(GV)) {
if (F->getName().startswith("llvm."))
Res |= BasicSymbolRef::SF_FormatSpecific;
}

return Res;
}

Expand Down
1 change: 1 addition & 0 deletions test/Object/Inputs/trivial.ll
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,4 @@ declare void @SomeOtherFunction(...)

@var = global i32 0
@llvm.used = appending global [1 x i8*] [i8* bitcast (i32* @var to i8*)], section "llvm.metadata"
@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* null, i8* null }]

0 comments on commit 8089fee

Please sign in to comment.