Ignore llvm.* globals.

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
This commit is contained in:
Rafael Espindola 2014-07-04 19:08:22 +00:00
parent bb5f6229f4
commit 8089fee2dd
2 changed files with 4 additions and 6 deletions

View File

@ -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;
}

View File

@ -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 }]