[Alignment][NFC] Convert StoreInst to MaybeAlign
[llvm-complete.git] / lib / DebugInfo / PDB / DIA / DIASectionContrib.cpp
blob4f0e078e6712cf18f755b9ae453328289a8d4619
1 //===- DIASectionContrib.cpp - DIA impl. of IPDBSectionContrib ---- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
9 #include "llvm/DebugInfo/PDB/DIA/DIASectionContrib.h"
10 #include "llvm/DebugInfo/PDB/DIA/DIARawSymbol.h"
11 #include "llvm/DebugInfo/PDB/DIA/DIASession.h"
12 #include "llvm/DebugInfo/PDB/PDBSymbolCompiland.h"
14 using namespace llvm;
15 using namespace llvm::pdb;
17 DIASectionContrib::DIASectionContrib(const DIASession &PDBSession,
18 CComPtr<IDiaSectionContrib> DiaSection)
19 : Session(PDBSession), Section(DiaSection) {}
21 std::unique_ptr<PDBSymbolCompiland> DIASectionContrib::getCompiland() const {
22 CComPtr<IDiaSymbol> Symbol;
23 if (FAILED(Section->get_compiland(&Symbol)))
24 return nullptr;
26 auto RawSymbol = std::make_unique<DIARawSymbol>(Session, Symbol);
27 return PDBSymbol::createAs<PDBSymbolCompiland>(Session, std::move(RawSymbol));
30 template <typename ArgType>
31 ArgType
32 PrivateGetDIAValue(IDiaSectionContrib *Section,
33 HRESULT (__stdcall IDiaSectionContrib::*Method)(ArgType *)) {
34 ArgType Value;
35 if (S_OK == (Section->*Method)(&Value))
36 return static_cast<ArgType>(Value);
38 return ArgType();
41 uint32_t DIASectionContrib::getAddressSection() const {
42 return PrivateGetDIAValue(Section, &IDiaSectionContrib::get_addressSection);
45 uint32_t DIASectionContrib::getAddressOffset() const {
46 return PrivateGetDIAValue(Section, &IDiaSectionContrib::get_addressOffset);
49 uint64_t DIASectionContrib::getVirtualAddress() const {
50 return PrivateGetDIAValue(Section, &IDiaSectionContrib::get_virtualAddress);
53 uint32_t DIASectionContrib::getRelativeVirtualAddress() const {
54 return PrivateGetDIAValue(Section,
55 &IDiaSectionContrib::get_relativeVirtualAddress);
58 uint32_t DIASectionContrib::getLength() const {
59 return PrivateGetDIAValue(Section, &IDiaSectionContrib::get_length);
62 bool DIASectionContrib::isNotPaged() const {
63 return PrivateGetDIAValue(Section, &IDiaSectionContrib::get_notPaged);
66 bool DIASectionContrib::hasCode() const {
67 return PrivateGetDIAValue(Section, &IDiaSectionContrib::get_code);
70 bool DIASectionContrib::hasCode16Bit() const {
71 return PrivateGetDIAValue(Section, &IDiaSectionContrib::get_code16bit);
74 bool DIASectionContrib::hasInitializedData() const {
75 return PrivateGetDIAValue(Section, &IDiaSectionContrib::get_initializedData);
78 bool DIASectionContrib::hasUninitializedData() const {
79 return PrivateGetDIAValue(Section,
80 &IDiaSectionContrib::get_uninitializedData);
83 bool DIASectionContrib::isRemoved() const {
84 return PrivateGetDIAValue(Section, &IDiaSectionContrib::get_remove);
87 bool DIASectionContrib::hasComdat() const {
88 return PrivateGetDIAValue(Section, &IDiaSectionContrib::get_comdat);
91 bool DIASectionContrib::isDiscardable() const {
92 return PrivateGetDIAValue(Section, &IDiaSectionContrib::get_discardable);
95 bool DIASectionContrib::isNotCached() const {
96 return PrivateGetDIAValue(Section, &IDiaSectionContrib::get_notCached);
99 bool DIASectionContrib::isShared() const {
100 return PrivateGetDIAValue(Section, &IDiaSectionContrib::get_share);
103 bool DIASectionContrib::isExecutable() const {
104 return PrivateGetDIAValue(Section, &IDiaSectionContrib::get_execute);
107 bool DIASectionContrib::isReadable() const {
108 return PrivateGetDIAValue(Section, &IDiaSectionContrib::get_read);
111 bool DIASectionContrib::isWritable() const {
112 return PrivateGetDIAValue(Section, &IDiaSectionContrib::get_write);
115 uint32_t DIASectionContrib::getDataCrc32() const {
116 return PrivateGetDIAValue(Section, &IDiaSectionContrib::get_dataCrc);
119 uint32_t DIASectionContrib::getRelocationsCrc32() const {
120 return PrivateGetDIAValue(Section, &IDiaSectionContrib::get_relocationsCrc);
123 uint32_t DIASectionContrib::getCompilandId() const {
124 return PrivateGetDIAValue(Section, &IDiaSectionContrib::get_compilandId);