27using namespace CodeGen;
49 !
D->getParent()->field_empty())
54 if (!
D->hasTrivialBody())
61 if (
Class->mayInsertExtraPadding())
65 if (
Class->getNumVBases()) {
74 for (
const auto *I :
Class->fields())
75 if (I->getType().isDestructedType())
80 for (
const auto &I :
Class->bases()) {
83 if (I.isVirtual())
continue;
88 if (
Base->hasTrivialDestructor())
continue;
92 if (UniqueBase)
return true;
123 if (!llvm::GlobalAlias::isValidLinkage(
Linkage))
126 llvm::GlobalValue::LinkageTypes TargetLinkage =
132 if (Entry && !Entry->isDeclaration())
134 if (Replacements.count(MangledName))
144 if (llvm::GlobalValue::isDiscardableIfUnused(
Linkage) &&
145 !(TargetLinkage == llvm::GlobalValue::AvailableExternallyLinkage &&
161 if (llvm::GlobalValue::isWeakForLinker(
Linkage) &&
169 if (Aliasee->isDeclarationForLinker())
176 if (llvm::GlobalValue::isWeakForLinker(TargetLinkage))
180 auto *Alias = llvm::GlobalAlias::create(AliasValueType, 0,
Linkage,
"",
184 Alias->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
188 assert(Entry->getValueType() == AliasValueType &&
189 Entry->getAddressSpace() == Alias->getAddressSpace() &&
190 "declaration exists with different type");
191 Alias->takeName(Entry);
192 Entry->replaceAllUsesWith(Alias);
193 Entry->eraseFromParent();
195 Alias->setName(MangledName);