diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2015-06-17 19:08:05 +0000 |
---|---|---|
committer | Peter Collingbourne <peter@pcc.me.uk> | 2015-06-17 19:08:05 +0000 |
commit | 86d34a72b3c1abcbeb38fa6670f83cd733de1234 (patch) | |
tree | e73836c747aa5f9c6f3e258bb25d461317b02a37 /clang/lib/CodeGen/CGVTables.cpp | |
parent | 3d920eed5d1908fb62b58124369493dfd3a2b42c (diff) | |
download | llvm-86d34a72b3c1abcbeb38fa6670f83cd733de1234.zip llvm-86d34a72b3c1abcbeb38fa6670f83cd733de1234.tar.gz llvm-86d34a72b3c1abcbeb38fa6670f83cd733de1234.tar.bz2 |
CodeGen: Factor out some of the bitset entry creation code. NFC.
llvm-svn: 239927
Diffstat (limited to 'clang/lib/CodeGen/CGVTables.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGVTables.cpp | 22 |
1 files changed, 4 insertions, 18 deletions
diff --git a/clang/lib/CodeGen/CGVTables.cpp b/clang/lib/CodeGen/CGVTables.cpp index 57370a6..17db401 100644 --- a/clang/lib/CodeGen/CGVTables.cpp +++ b/clang/lib/CodeGen/CGVTables.cpp @@ -848,7 +848,8 @@ void CodeGenModule::EmitVTableBitSetEntries(llvm::GlobalVariable *VTable, !LangOpts.Sanitize.has(SanitizerKind::CFIUnrelatedCast)) return; - llvm::Metadata *VTableMD = llvm::ConstantAsMetadata::get(VTable); + CharUnits PointerWidth = + Context.toCharUnitsFromBits(Context.getTargetInfo().getPointerWidth(0)); std::vector<llvm::MDTuple *> BitsetEntries; // Create a bit set entry for each address point. @@ -857,23 +858,8 @@ void CodeGenModule::EmitVTableBitSetEntries(llvm::GlobalVariable *VTable, if (AP.first.getBase()->isInStdNamespace()) continue; - std::string OutName; - llvm::raw_string_ostream Out(OutName); - getCXXABI().getMangleContext().mangleCXXVTableBitSet(AP.first.getBase(), - Out); - - CharUnits PointerWidth = - Context.toCharUnitsFromBits(Context.getTargetInfo().getPointerWidth(0)); - uint64_t AddrPointOffset = AP.second * PointerWidth.getQuantity(); - - llvm::Metadata *BitsetOps[] = { - llvm::MDString::get(getLLVMContext(), Out.str()), - VTableMD, - llvm::ConstantAsMetadata::get( - llvm::ConstantInt::get(Int64Ty, AddrPointOffset))}; - llvm::MDTuple *BitsetEntry = - llvm::MDTuple::get(getLLVMContext(), BitsetOps); - BitsetEntries.push_back(BitsetEntry); + BitsetEntries.push_back(CreateVTableBitSetEntry( + VTable, PointerWidth * AP.second, AP.first.getBase())); } // Sort the bit set entries for determinism. |