diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2015-06-21 14:00:56 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2015-06-21 14:00:56 +0000 | 
| commit | 2e645aa5697838f16ec570eb07c2bee7e13d0e0b (patch) | |
| tree | a764184c2fc9486979b074250b013a0937ee64e5 /lib/CodeGen/CodeGenModule.cpp | |
| parent | 798321d8eb5630cd4a8f490a4f25e32ef195fb07 (diff) | |
Notes
Diffstat (limited to 'lib/CodeGen/CodeGenModule.cpp')
| -rw-r--r-- | lib/CodeGen/CodeGenModule.cpp | 76 | 
1 files changed, 38 insertions, 38 deletions
diff --git a/lib/CodeGen/CodeGenModule.cpp b/lib/CodeGen/CodeGenModule.cpp index 9496831ea8c8..2dd5414795e7 100644 --- a/lib/CodeGen/CodeGenModule.cpp +++ b/lib/CodeGen/CodeGenModule.cpp @@ -205,11 +205,9 @@ void CodeGenModule::addReplacement(StringRef Name, llvm::Constant *C) {  }  void CodeGenModule::applyReplacements() { -  for (ReplacementsTy::iterator I = Replacements.begin(), -                                E = Replacements.end(); -       I != E; ++I) { -    StringRef MangledName = I->first(); -    llvm::Constant *Replacement = I->second; +  for (auto &I : Replacements) { +    StringRef MangledName = I.first(); +    llvm::Constant *Replacement = I.second;      llvm::GlobalValue *Entry = GetGlobalValue(MangledName);      if (!Entry)        continue; @@ -261,9 +259,7 @@ void CodeGenModule::checkAliases() {    // and aliases during codegen.    bool Error = false;    DiagnosticsEngine &Diags = getDiags(); -  for (std::vector<GlobalDecl>::iterator I = Aliases.begin(), -         E = Aliases.end(); I != E; ++I) { -    const GlobalDecl &GD = *I; +  for (const GlobalDecl &GD : Aliases) {      const auto *D = cast<ValueDecl>(GD.getDecl());      const AliasAttr *AA = D->getAttr<AliasAttr>();      StringRef MangledName = getMangledName(GD); @@ -310,9 +306,7 @@ void CodeGenModule::checkAliases() {    if (!Error)      return; -  for (std::vector<GlobalDecl>::iterator I = Aliases.begin(), -         E = Aliases.end(); I != E; ++I) { -    const GlobalDecl &GD = *I; +  for (const GlobalDecl &GD : Aliases) {      StringRef MangledName = getMangledName(GD);      llvm::GlobalValue *Entry = GetGlobalValue(MangledName);      auto *Alias = cast<llvm::GlobalAlias>(Entry); @@ -637,15 +631,14 @@ void CodeGenModule::EmitCtorList(const CtorList &Fns, const char *GlobalName) {        Int32Ty, llvm::PointerType::getUnqual(CtorFTy), VoidPtrTy, nullptr);    // Construct the constructor and destructor arrays. -  SmallVector<llvm::Constant*, 8> Ctors; -  for (CtorList::const_iterator I = Fns.begin(), E = Fns.end(); I != E; ++I) { +  SmallVector<llvm::Constant *, 8> Ctors; +  for (const auto &I : Fns) {      llvm::Constant *S[] = { -      llvm::ConstantInt::get(Int32Ty, I->Priority, false), -      llvm::ConstantExpr::getBitCast(I->Initializer, CtorPFTy), -      (I->AssociatedData -           ? llvm::ConstantExpr::getBitCast(I->AssociatedData, VoidPtrTy) -           : llvm::Constant::getNullValue(VoidPtrTy)) -    }; +        llvm::ConstantInt::get(Int32Ty, I.Priority, false), +        llvm::ConstantExpr::getBitCast(I.Initializer, CtorPFTy), +        (I.AssociatedData +             ? llvm::ConstantExpr::getBitCast(I.AssociatedData, VoidPtrTy) +             : llvm::Constant::getNullValue(VoidPtrTy))};      Ctors.push_back(llvm::ConstantStruct::get(CtorStructTy, S));    } @@ -1029,12 +1022,9 @@ void CodeGenModule::EmitModuleLinkOptions() {    SmallVector<clang::Module *, 16> Stack;    // Seed the stack with imported modules. -  for (llvm::SetVector<clang::Module *>::iterator M = ImportedModules.begin(), -                                               MEnd = ImportedModules.end(); -       M != MEnd; ++M) { -    if (Visited.insert(*M).second) -      Stack.push_back(*M); -  } +  for (Module *M : ImportedModules) +    if (Visited.insert(M).second) +      Stack.push_back(M);    // Find all of the modules to import, making a little effort to prune    // non-leaf modules. @@ -1070,12 +1060,9 @@ void CodeGenModule::EmitModuleLinkOptions() {    // to linker options inserted by things like #pragma comment().    SmallVector<llvm::Metadata *, 16> MetadataArgs;    Visited.clear(); -  for (llvm::SetVector<clang::Module *>::iterator M = LinkModules.begin(), -                                               MEnd = LinkModules.end(); -       M != MEnd; ++M) { -    if (Visited.insert(*M).second) -      addLinkOptionsPostorder(*this, *M, MetadataArgs, Visited); -  } +  for (Module *M : LinkModules) +    if (Visited.insert(M).second) +      addLinkOptionsPostorder(*this, M, MetadataArgs, Visited);    std::reverse(MetadataArgs.begin(), MetadataArgs.end());    LinkerOptionsMetadata.append(MetadataArgs.begin(), MetadataArgs.end()); @@ -1231,8 +1218,9 @@ bool CodeGenModule::isInSanitizerBlacklist(llvm::Function *Fn,  bool CodeGenModule::isInSanitizerBlacklist(llvm::GlobalVariable *GV,                                             SourceLocation Loc, QualType Ty,                                             StringRef Category) const { -  // For now globals can be blacklisted only in ASan. -  if (!LangOpts.Sanitize.has(SanitizerKind::Address)) +  // For now globals can be blacklisted only in ASan and KASan. +  if (!LangOpts.Sanitize.hasOneOf( +          SanitizerKind::Address | SanitizerKind::KernelAddress))      return false;    const auto &SanitizerBL = getContext().getSanitizerBlacklist();    if (SanitizerBL.isBlacklistedGlobal(GV->getName(), Category)) @@ -3510,11 +3498,9 @@ static void EmitGlobalDeclMetadata(CodeGenModule &CGM,  /// to such functions with an unmangled name from inline assembly within the  /// same translation unit.  void CodeGenModule::EmitStaticExternCAliases() { -  for (StaticExternCMap::iterator I = StaticExternCValues.begin(), -                                  E = StaticExternCValues.end(); -       I != E; ++I) { -    IdentifierInfo *Name = I->first; -    llvm::GlobalValue *Val = I->second; +  for (auto &I : StaticExternCValues) { +    IdentifierInfo *Name = I.first; +    llvm::GlobalValue *Val = I.second;      if (Val && !getModule().getNamedValue(Name->getName()))        addUsedGlobal(llvm::GlobalAlias::create(Name->getName(), Val));    } @@ -3674,3 +3660,17 @@ void CodeGenModule::EmitOMPThreadPrivateDecl(const OMPThreadPrivateDecl *D) {        CXXGlobalInits.push_back(InitFunction);    }  } + +llvm::MDTuple *CodeGenModule::CreateVTableBitSetEntry( +    llvm::GlobalVariable *VTable, CharUnits Offset, const CXXRecordDecl *RD) { +  std::string OutName; +  llvm::raw_string_ostream Out(OutName); +  getCXXABI().getMangleContext().mangleCXXVTableBitSet(RD, Out); + +  llvm::Metadata *BitsetOps[] = { +      llvm::MDString::get(getLLVMContext(), Out.str()), +      llvm::ConstantAsMetadata::get(VTable), +      llvm::ConstantAsMetadata::get( +          llvm::ConstantInt::get(Int64Ty, Offset.getQuantity()))}; +  return llvm::MDTuple::get(getLLVMContext(), BitsetOps); +}  | 
