LLVM  14.0.0git
Classes | Namespaces | Macros | Enumerations | Functions
CodeView.h File Reference
#include <cinttypes>
#include <type_traits>
#include "llvm/Support/Endian.h"
#include "CodeViewTypes.def"
#include "CodeViewSymbols.def"
#include "CodeViewRegisters.def"
Include dependency graph for CodeView.h:

Go to the source code of this file.

Classes

struct  llvm::codeview::CPURegister
 
struct  llvm::codeview::FrameData
 Data in the SUBSEC_FRAMEDATA subection. More...
 
struct  llvm::codeview::CrossModuleExport
 
struct  llvm::codeview::CrossModuleImport
 

Namespaces

 llvm
 This is an optimization pass for GlobalISel generic memory operations.
 
 llvm::codeview
 

Macros

#define TYPE_RECORD(lf_ename, value, name)   name = value,
 
#define CV_TYPE(name, val)   name = val,
 
#define SYMBOL_RECORD(lf_ename, value, name)   name = value,
 
#define CV_SYMBOL(name, val)   name = val,
 
#define CV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS(Class)
 
#define CV_REGISTERS_ALL
 
#define CV_REGISTER(name, value)   name = value,
 

Enumerations

enum  llvm::codeview::TypeRecordKind : uint16_t { llvm::codeview::TypeRecordKind::TYPE_RECORD }
 Distinguishes individual records in .debug$T or .debug$P section or PDB type stream. More...
 
enum  llvm::codeview::TypeLeafKind : uint16_t
 Duplicate copy of the above enum, but using the official CV names. More...
 
enum  llvm::codeview::SymbolRecordKind : uint16_t { llvm::codeview::SymbolRecordKind::SYMBOL_RECORD }
 Distinguishes individual records in the Symbols subsection of a .debug$S section. More...
 
enum  llvm::codeview::SymbolKind : uint16_t
 Duplicate copy of the above enum, but using the official CV names. More...
 
enum  llvm::codeview::CPUType : uint16_t {
  llvm::codeview::CPUType::Intel8080 = 0x0, llvm::codeview::CPUType::Intel8086 = 0x1, llvm::codeview::CPUType::Intel80286 = 0x2, llvm::codeview::CPUType::Intel80386 = 0x3,
  llvm::codeview::CPUType::Intel80486 = 0x4, llvm::codeview::CPUType::Pentium = 0x5, llvm::codeview::CPUType::PentiumPro = 0x6, llvm::codeview::CPUType::Pentium3 = 0x7,
  llvm::codeview::CPUType::MIPS = 0x10, llvm::codeview::CPUType::MIPS16 = 0x11, llvm::codeview::CPUType::MIPS32 = 0x12, llvm::codeview::CPUType::MIPS64 = 0x13,
  llvm::codeview::CPUType::MIPSI = 0x14, llvm::codeview::CPUType::MIPSII = 0x15, llvm::codeview::CPUType::MIPSIII = 0x16, llvm::codeview::CPUType::MIPSIV = 0x17,
  llvm::codeview::CPUType::MIPSV = 0x18, llvm::codeview::CPUType::M68000 = 0x20, llvm::codeview::CPUType::M68010 = 0x21, llvm::codeview::CPUType::M68020 = 0x22,
  llvm::codeview::CPUType::M68030 = 0x23, llvm::codeview::CPUType::M68040 = 0x24, llvm::codeview::CPUType::Alpha = 0x30, llvm::codeview::CPUType::Alpha21164 = 0x31,
  llvm::codeview::CPUType::Alpha21164A = 0x32, llvm::codeview::CPUType::Alpha21264 = 0x33, llvm::codeview::CPUType::Alpha21364 = 0x34, llvm::codeview::CPUType::PPC601 = 0x40,
  llvm::codeview::CPUType::PPC603 = 0x41, llvm::codeview::CPUType::PPC604 = 0x42, llvm::codeview::CPUType::PPC620 = 0x43, llvm::codeview::CPUType::PPCFP = 0x44,
  llvm::codeview::CPUType::PPCBE = 0x45, llvm::codeview::CPUType::SH3 = 0x50, llvm::codeview::CPUType::SH3E = 0x51, llvm::codeview::CPUType::SH3DSP = 0x52,
  llvm::codeview::CPUType::SH4 = 0x53, llvm::codeview::CPUType::SHMedia = 0x54, llvm::codeview::CPUType::ARM3 = 0x60, llvm::codeview::CPUType::ARM4 = 0x61,
  llvm::codeview::CPUType::ARM4T = 0x62, llvm::codeview::CPUType::ARM5 = 0x63, llvm::codeview::CPUType::ARM5T = 0x64, llvm::codeview::CPUType::ARM6 = 0x65,
  llvm::codeview::CPUType::ARM_XMAC = 0x66, llvm::codeview::CPUType::ARM_WMMX = 0x67, llvm::codeview::CPUType::ARM7 = 0x68, llvm::codeview::CPUType::Omni = 0x70,
  llvm::codeview::CPUType::Ia64 = 0x80, llvm::codeview::CPUType::Ia64_2 = 0x81, llvm::codeview::CPUType::CEE = 0x90, llvm::codeview::CPUType::AM33 = 0xa0,
  llvm::codeview::CPUType::M32R = 0xb0, llvm::codeview::CPUType::TriCore = 0xc0, llvm::codeview::CPUType::X64 = 0xd0, llvm::codeview::CPUType::EBC = 0xe0,
  llvm::codeview::CPUType::Thumb = 0xf0, llvm::codeview::CPUType::ARMNT = 0xf4, llvm::codeview::CPUType::ARM64 = 0xf6, llvm::codeview::CPUType::HybridX86ARM64 = 0xf7,
  llvm::codeview::CPUType::ARM64EC = 0xf8, llvm::codeview::CPUType::ARM64X = 0xf9, llvm::codeview::CPUType::D3D11_Shader = 0x100
}
 These values correspond to the CV_CPU_TYPE_e enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/b2fc64ek.aspx. More...
 
enum  llvm::codeview::SourceLanguage : uint8_t {
  llvm::codeview::C = 0x00, llvm::codeview::Cpp = 0x01, llvm::codeview::Fortran = 0x02, llvm::codeview::Masm = 0x03,
  llvm::codeview::Pascal = 0x04, llvm::codeview::Basic = 0x05, llvm::codeview::Cobol = 0x06, llvm::codeview::Link = 0x07,
  llvm::codeview::Cvtres = 0x08, llvm::codeview::Cvtpgd = 0x09, llvm::codeview::CSharp = 0x0a, llvm::codeview::VB = 0x0b,
  llvm::codeview::ILAsm = 0x0c, llvm::codeview::Java = 0x0d, llvm::codeview::JScript = 0x0e, llvm::codeview::MSIL = 0x0f,
  llvm::codeview::HLSL = 0x10, llvm::codeview::D = 'D', llvm::codeview::Swift = 'S'
}
 These values correspond to the CV_CFL_LANG enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/bw3aekw6.aspx. More...
 
enum  llvm::codeview::CallingConvention : uint8_t {
  llvm::codeview::CallingConvention::NearC = 0x00, llvm::codeview::CallingConvention::FarC = 0x01, llvm::codeview::CallingConvention::NearPascal = 0x02, llvm::codeview::CallingConvention::FarPascal = 0x03,
  llvm::codeview::CallingConvention::NearFast = 0x04, llvm::codeview::CallingConvention::FarFast = 0x05, llvm::codeview::CallingConvention::NearStdCall = 0x07, llvm::codeview::CallingConvention::FarStdCall = 0x08,
  llvm::codeview::CallingConvention::NearSysCall = 0x09, llvm::codeview::CallingConvention::FarSysCall = 0x0a, llvm::codeview::CallingConvention::ThisCall = 0x0b, llvm::codeview::CallingConvention::MipsCall = 0x0c,
  llvm::codeview::CallingConvention::Generic = 0x0d, llvm::codeview::CallingConvention::AlphaCall = 0x0e, llvm::codeview::CallingConvention::PpcCall = 0x0f, llvm::codeview::CallingConvention::SHCall = 0x10,
  llvm::codeview::CallingConvention::ArmCall = 0x11, llvm::codeview::CallingConvention::AM33Call = 0x12, llvm::codeview::CallingConvention::TriCall = 0x13, llvm::codeview::CallingConvention::SH5Call = 0x14,
  llvm::codeview::CallingConvention::M32RCall = 0x15, llvm::codeview::CallingConvention::ClrCall = 0x16, llvm::codeview::CallingConvention::Inline, llvm::codeview::CallingConvention::NearVector = 0x18
}
 These values correspond to the CV_call_e enumeration, and are documented at the following locations: https://msdn.microsoft.com/en-us/library/b2fc64ek.aspx https://msdn.microsoft.com/en-us/library/windows/desktop/ms680207(v=vs.85).aspx. More...
 
enum  llvm::codeview::ClassOptions : uint16_t {
  llvm::codeview::ClassOptions::None = 0x0000, llvm::codeview::ClassOptions::Packed = 0x0001, llvm::codeview::ClassOptions::HasConstructorOrDestructor = 0x0002, llvm::codeview::ClassOptions::HasOverloadedOperator = 0x0004,
  llvm::codeview::ClassOptions::Nested = 0x0008, llvm::codeview::ClassOptions::ContainsNestedClass = 0x0010, llvm::codeview::ClassOptions::HasOverloadedAssignmentOperator = 0x0020, llvm::codeview::ClassOptions::HasConversionOperator = 0x0040,
  llvm::codeview::ClassOptions::ForwardReference = 0x0080, llvm::codeview::ClassOptions::Scoped = 0x0100, llvm::codeview::ClassOptions::HasUniqueName = 0x0200, llvm::codeview::ClassOptions::Sealed = 0x0400,
  llvm::codeview::ClassOptions::Intrinsic = 0x2000
}
 
enum  llvm::codeview::FrameProcedureOptions : uint32_t {
  llvm::codeview::FrameProcedureOptions::None = 0x00000000, llvm::codeview::FrameProcedureOptions::HasAlloca = 0x00000001, llvm::codeview::FrameProcedureOptions::HasSetJmp = 0x00000002, llvm::codeview::FrameProcedureOptions::HasLongJmp = 0x00000004,
  llvm::codeview::FrameProcedureOptions::HasInlineAssembly = 0x00000008, llvm::codeview::FrameProcedureOptions::HasExceptionHandling = 0x00000010, llvm::codeview::FrameProcedureOptions::MarkedInline = 0x00000020, llvm::codeview::FrameProcedureOptions::HasStructuredExceptionHandling = 0x00000040,
  llvm::codeview::FrameProcedureOptions::Naked = 0x00000080, llvm::codeview::FrameProcedureOptions::SecurityChecks = 0x00000100, llvm::codeview::FrameProcedureOptions::AsynchronousExceptionHandling = 0x00000200, llvm::codeview::FrameProcedureOptions::NoStackOrderingForSecurityChecks = 0x00000400,
  llvm::codeview::FrameProcedureOptions::Inlined = 0x00000800, llvm::codeview::FrameProcedureOptions::StrictSecurityChecks = 0x00001000, llvm::codeview::FrameProcedureOptions::SafeBuffers = 0x00002000, llvm::codeview::FrameProcedureOptions::EncodedLocalBasePointerMask = 0x0000C000,
  llvm::codeview::FrameProcedureOptions::EncodedParamBasePointerMask = 0x00030000, llvm::codeview::FrameProcedureOptions::ProfileGuidedOptimization = 0x00040000, llvm::codeview::FrameProcedureOptions::ValidProfileCounts = 0x00080000, llvm::codeview::FrameProcedureOptions::OptimizedForSpeed = 0x00100000,
  llvm::codeview::FrameProcedureOptions::GuardCfg = 0x00200000, llvm::codeview::FrameProcedureOptions::GuardCfw = 0x00400000
}
 
enum  llvm::codeview::FunctionOptions : uint8_t { llvm::codeview::FunctionOptions::None = 0x00, llvm::codeview::FunctionOptions::CxxReturnUdt = 0x01, llvm::codeview::FunctionOptions::Constructor = 0x02, llvm::codeview::FunctionOptions::ConstructorWithVirtualBases = 0x04 }
 
enum  llvm::codeview::HfaKind : uint8_t { llvm::codeview::HfaKind::None = 0x00, llvm::codeview::HfaKind::Float = 0x01, llvm::codeview::HfaKind::Double = 0x02, llvm::codeview::HfaKind::Other = 0x03 }
 
enum  llvm::codeview::MemberAccess : uint8_t { llvm::codeview::MemberAccess::None = 0, llvm::codeview::MemberAccess::Private = 1, llvm::codeview::MemberAccess::Protected = 2, llvm::codeview::MemberAccess::Public = 3 }
 Source-level access specifier. (CV_access_e) More...
 
enum  llvm::codeview::MethodKind : uint8_t {
  llvm::codeview::MethodKind::Vanilla = 0x00, llvm::codeview::MethodKind::Virtual = 0x01, llvm::codeview::MethodKind::Static = 0x02, llvm::codeview::MethodKind::Friend = 0x03,
  llvm::codeview::MethodKind::IntroducingVirtual = 0x04, llvm::codeview::MethodKind::PureVirtual = 0x05, llvm::codeview::MethodKind::PureIntroducingVirtual = 0x06
}
 Part of member attribute flags. (CV_methodprop_e) More...
 
enum  llvm::codeview::MethodOptions : uint16_t {
  llvm::codeview::MethodOptions::None = 0x0000, llvm::codeview::MethodOptions::AccessMask = 0x0003, llvm::codeview::MethodOptions::MethodKindMask = 0x001c, llvm::codeview::MethodOptions::Pseudo = 0x0020,
  llvm::codeview::MethodOptions::NoInherit = 0x0040, llvm::codeview::MethodOptions::NoConstruct = 0x0080, llvm::codeview::MethodOptions::CompilerGenerated = 0x0100, llvm::codeview::MethodOptions::Sealed = 0x0200
}
 Equivalent to CV_fldattr_t bitfield. More...
 
enum  llvm::codeview::LabelType : uint16_t { llvm::codeview::LabelType::Near = 0x0, llvm::codeview::LabelType::Far = 0x4 }
 Equivalent to CV_LABEL_TYPE_e. More...
 
enum  llvm::codeview::ModifierOptions : uint16_t { llvm::codeview::ModifierOptions::None = 0x0000, llvm::codeview::ModifierOptions::Const = 0x0001, llvm::codeview::ModifierOptions::Volatile = 0x0002, llvm::codeview::ModifierOptions::Unaligned = 0x0004 }
 Equivalent to CV_modifier_t. More...
 
enum  : uint32_t { llvm::codeview::SubsectionIgnoreFlag = 0x80000000 }
 
enum  llvm::codeview::DebugSubsectionKind : uint32_t {
  llvm::codeview::DebugSubsectionKind::None = 0, llvm::codeview::DebugSubsectionKind::Symbols = 0xf1, llvm::codeview::DebugSubsectionKind::Lines = 0xf2, llvm::codeview::DebugSubsectionKind::StringTable = 0xf3,
  llvm::codeview::DebugSubsectionKind::FileChecksums = 0xf4, llvm::codeview::DebugSubsectionKind::FrameData = 0xf5, llvm::codeview::DebugSubsectionKind::InlineeLines = 0xf6, llvm::codeview::DebugSubsectionKind::CrossScopeImports = 0xf7,
  llvm::codeview::DebugSubsectionKind::CrossScopeExports = 0xf8, llvm::codeview::DebugSubsectionKind::ILLines = 0xf9, llvm::codeview::DebugSubsectionKind::FuncMDTokenMap = 0xfa, llvm::codeview::DebugSubsectionKind::TypeMDTokenMap = 0xfb,
  llvm::codeview::DebugSubsectionKind::MergedAssemblyInput = 0xfc, llvm::codeview::DebugSubsectionKind::CoffSymbolRVA = 0xfd
}
 
enum  llvm::codeview::PointerKind : uint8_t {
  llvm::codeview::PointerKind::Near16 = 0x00, llvm::codeview::PointerKind::Far16 = 0x01, llvm::codeview::PointerKind::Huge16 = 0x02, llvm::codeview::PointerKind::BasedOnSegment = 0x03,
  llvm::codeview::PointerKind::BasedOnValue = 0x04, llvm::codeview::PointerKind::BasedOnSegmentValue = 0x05, llvm::codeview::PointerKind::BasedOnAddress = 0x06, llvm::codeview::PointerKind::BasedOnSegmentAddress = 0x07,
  llvm::codeview::PointerKind::BasedOnType = 0x08, llvm::codeview::PointerKind::BasedOnSelf = 0x09, llvm::codeview::PointerKind::Near32 = 0x0a, llvm::codeview::PointerKind::Far32 = 0x0b,
  llvm::codeview::PointerKind::Near64 = 0x0c
}
 Equivalent to CV_ptrtype_e. More...
 
enum  llvm::codeview::PointerMode : uint8_t {
  llvm::codeview::PointerMode::Pointer = 0x00, llvm::codeview::PointerMode::LValueReference = 0x01, llvm::codeview::PointerMode::PointerToDataMember = 0x02, llvm::codeview::PointerMode::PointerToMemberFunction = 0x03,
  llvm::codeview::PointerMode::RValueReference = 0x04
}
 Equivalent to CV_ptrmode_e. More...
 
enum  llvm::codeview::PointerOptions : uint32_t {
  llvm::codeview::PointerOptions::None = 0x00000000, llvm::codeview::PointerOptions::Flat32 = 0x00000100, llvm::codeview::PointerOptions::Volatile = 0x00000200, llvm::codeview::PointerOptions::Const = 0x00000400,
  llvm::codeview::PointerOptions::Unaligned = 0x00000800, llvm::codeview::PointerOptions::Restrict = 0x00001000, llvm::codeview::PointerOptions::WinRTSmartPointer = 0x00080000, llvm::codeview::PointerOptions::LValueRefThisPointer = 0x00100000,
  llvm::codeview::PointerOptions::RValueRefThisPointer = 0x00200000
}
 Equivalent to misc lfPointerAttr bitfields. More...
 
enum  llvm::codeview::PointerToMemberRepresentation : uint16_t {
  llvm::codeview::PointerToMemberRepresentation::Unknown = 0x00, llvm::codeview::PointerToMemberRepresentation::SingleInheritanceData = 0x01, llvm::codeview::PointerToMemberRepresentation::MultipleInheritanceData = 0x02, llvm::codeview::PointerToMemberRepresentation::VirtualInheritanceData = 0x03,
  llvm::codeview::PointerToMemberRepresentation::GeneralData = 0x04, llvm::codeview::PointerToMemberRepresentation::SingleInheritanceFunction = 0x05, llvm::codeview::PointerToMemberRepresentation::MultipleInheritanceFunction = 0x06, llvm::codeview::PointerToMemberRepresentation::VirtualInheritanceFunction = 0x07,
  llvm::codeview::PointerToMemberRepresentation::GeneralFunction = 0x08
}
 Equivalent to CV_pmtype_e. More...
 
enum  llvm::codeview::VFTableSlotKind : uint8_t {
  llvm::codeview::VFTableSlotKind::Near16 = 0x00, llvm::codeview::VFTableSlotKind::Far16 = 0x01, llvm::codeview::VFTableSlotKind::This = 0x02, llvm::codeview::VFTableSlotKind::Outer = 0x03,
  llvm::codeview::VFTableSlotKind::Meta = 0x04, llvm::codeview::VFTableSlotKind::Near = 0x05, llvm::codeview::VFTableSlotKind::Far = 0x06
}
 
enum  llvm::codeview::WindowsRTClassKind : uint8_t { llvm::codeview::WindowsRTClassKind::None = 0x00, llvm::codeview::WindowsRTClassKind::RefClass = 0x01, llvm::codeview::WindowsRTClassKind::ValueClass = 0x02, llvm::codeview::WindowsRTClassKind::Interface = 0x03 }
 
enum  llvm::codeview::LocalSymFlags : uint16_t {
  llvm::codeview::LocalSymFlags::None = 0, llvm::codeview::LocalSymFlags::IsParameter = 1 << 0, llvm::codeview::LocalSymFlags::IsAddressTaken = 1 << 1, llvm::codeview::LocalSymFlags::IsCompilerGenerated = 1 << 2,
  llvm::codeview::LocalSymFlags::IsAggregate = 1 << 3, llvm::codeview::LocalSymFlags::IsAggregated = 1 << 4, llvm::codeview::LocalSymFlags::IsAliased = 1 << 5, llvm::codeview::LocalSymFlags::IsAlias = 1 << 6,
  llvm::codeview::LocalSymFlags::IsReturnValue = 1 << 7, llvm::codeview::LocalSymFlags::IsOptimizedOut = 1 << 8, llvm::codeview::LocalSymFlags::IsEnregisteredGlobal = 1 << 9, llvm::codeview::LocalSymFlags::IsEnregisteredStatic = 1 << 10
}
 Corresponds to CV_LVARFLAGS bitfield. More...
 
enum  llvm::codeview::PublicSymFlags : uint32_t {
  llvm::codeview::PublicSymFlags::None = 0, llvm::codeview::PublicSymFlags::Code = 1 << 0, llvm::codeview::PublicSymFlags::Function = 1 << 1, llvm::codeview::PublicSymFlags::Managed = 1 << 2,
  llvm::codeview::PublicSymFlags::MSIL = 1 << 3
}
 Corresponds to the CV_PUBSYMFLAGS bitfield. More...
 
enum  llvm::codeview::ProcSymFlags : uint8_t {
  llvm::codeview::ProcSymFlags::None = 0, llvm::codeview::ProcSymFlags::HasFP = 1 << 0, llvm::codeview::ProcSymFlags::HasIRET = 1 << 1, llvm::codeview::ProcSymFlags::HasFRET = 1 << 2,
  llvm::codeview::ProcSymFlags::IsNoReturn = 1 << 3, llvm::codeview::ProcSymFlags::IsUnreachable = 1 << 4, llvm::codeview::ProcSymFlags::HasCustomCallingConv = 1 << 5, llvm::codeview::ProcSymFlags::IsNoInline = 1 << 6,
  llvm::codeview::ProcSymFlags::HasOptimizedDebugInfo = 1 << 7
}
 Corresponds to the CV_PROCFLAGS bitfield. More...
 
enum  llvm::codeview::CompileSym2Flags : uint32_t {
  llvm::codeview::CompileSym2Flags::None = 0, llvm::codeview::CompileSym2Flags::SourceLanguageMask = 0xFF, llvm::codeview::CompileSym2Flags::EC = 1 << 8, llvm::codeview::CompileSym2Flags::NoDbgInfo = 1 << 9,
  llvm::codeview::CompileSym2Flags::LTCG = 1 << 10, llvm::codeview::CompileSym2Flags::NoDataAlign = 1 << 11, llvm::codeview::CompileSym2Flags::ManagedPresent = 1 << 12, llvm::codeview::CompileSym2Flags::SecurityChecks = 1 << 13,
  llvm::codeview::CompileSym2Flags::HotPatch = 1 << 14, llvm::codeview::CompileSym2Flags::CVTCIL = 1 << 15, llvm::codeview::CompileSym2Flags::MSILModule = 1 << 16
}
 Corresponds to COMPILESYM2::Flags bitfield. More...
 
enum  llvm::codeview::CompileSym3Flags : uint32_t {
  llvm::codeview::CompileSym3Flags::None = 0, llvm::codeview::CompileSym3Flags::SourceLanguageMask = 0xFF, llvm::codeview::CompileSym3Flags::EC = 1 << 8, llvm::codeview::CompileSym3Flags::NoDbgInfo = 1 << 9,
  llvm::codeview::CompileSym3Flags::LTCG = 1 << 10, llvm::codeview::CompileSym3Flags::NoDataAlign = 1 << 11, llvm::codeview::CompileSym3Flags::ManagedPresent = 1 << 12, llvm::codeview::CompileSym3Flags::SecurityChecks = 1 << 13,
  llvm::codeview::CompileSym3Flags::HotPatch = 1 << 14, llvm::codeview::CompileSym3Flags::CVTCIL = 1 << 15, llvm::codeview::CompileSym3Flags::MSILModule = 1 << 16, llvm::codeview::CompileSym3Flags::Sdl = 1 << 17,
  llvm::codeview::CompileSym3Flags::PGO = 1 << 18, llvm::codeview::CompileSym3Flags::Exp = 1 << 19
}
 Corresponds to COMPILESYM3::Flags bitfield. More...
 
enum  llvm::codeview::ExportFlags : uint16_t {
  llvm::codeview::ExportFlags::None = 0, llvm::codeview::ExportFlags::IsConstant = 1 << 0, llvm::codeview::ExportFlags::IsData = 1 << 1, llvm::codeview::ExportFlags::IsPrivate = 1 << 2,
  llvm::codeview::ExportFlags::HasNoName = 1 << 3, llvm::codeview::ExportFlags::HasExplicitOrdinal = 1 << 4, llvm::codeview::ExportFlags::IsForwarder = 1 << 5
}
 
enum  llvm::codeview::BinaryAnnotationsOpCode : uint32_t {
  llvm::codeview::BinaryAnnotationsOpCode::Invalid, llvm::codeview::BinaryAnnotationsOpCode::CodeOffset, llvm::codeview::BinaryAnnotationsOpCode::ChangeCodeOffsetBase, llvm::codeview::BinaryAnnotationsOpCode::ChangeCodeOffset,
  llvm::codeview::BinaryAnnotationsOpCode::ChangeCodeLength, llvm::codeview::BinaryAnnotationsOpCode::ChangeFile, llvm::codeview::BinaryAnnotationsOpCode::ChangeLineOffset, llvm::codeview::BinaryAnnotationsOpCode::ChangeLineEndDelta,
  llvm::codeview::BinaryAnnotationsOpCode::ChangeRangeKind, llvm::codeview::BinaryAnnotationsOpCode::ChangeColumnStart, llvm::codeview::BinaryAnnotationsOpCode::ChangeColumnEndDelta, llvm::codeview::BinaryAnnotationsOpCode::ChangeCodeOffsetAndLineOffset,
  llvm::codeview::BinaryAnnotationsOpCode::ChangeCodeLengthAndCodeOffset, llvm::codeview::BinaryAnnotationsOpCode::ChangeColumnEnd
}
 
enum  llvm::codeview::FrameCookieKind : uint8_t { llvm::codeview::FrameCookieKind::Copy, llvm::codeview::FrameCookieKind::XorStackPointer, llvm::codeview::FrameCookieKind::XorFramePointer, llvm::codeview::FrameCookieKind::XorR13 }
 
enum  llvm::codeview::RegisterId : uint16_t { llvm::codeview::RegisterId::CV_REGISTERS_ALL, llvm::codeview::RegisterId::CV_REGISTER }
 
enum  llvm::codeview::EncodedFramePtrReg : uint8_t { llvm::codeview::EncodedFramePtrReg::None = 0, llvm::codeview::EncodedFramePtrReg::StackPtr = 1, llvm::codeview::EncodedFramePtrReg::FramePtr = 2, llvm::codeview::EncodedFramePtrReg::BasePtr = 3 }
 Two-bit value indicating which register is the designated frame pointer register. More...
 
enum  llvm::codeview::ThunkOrdinal : uint8_t {
  llvm::codeview::ThunkOrdinal::Standard, llvm::codeview::ThunkOrdinal::ThisAdjustor, llvm::codeview::ThunkOrdinal::Vcall, llvm::codeview::ThunkOrdinal::Pcode,
  llvm::codeview::ThunkOrdinal::UnknownLoad, llvm::codeview::ThunkOrdinal::TrampIncremental, llvm::codeview::ThunkOrdinal::BranchIsland
}
 These values correspond to the THUNK_ORDINAL enumeration. More...
 
enum  llvm::codeview::TrampolineType : uint16_t { llvm::codeview::TrampolineType::TrampIncremental, llvm::codeview::TrampolineType::BranchIsland }
 
enum  llvm::codeview::FileChecksumKind : uint8_t { llvm::codeview::FileChecksumKind::None, llvm::codeview::FileChecksumKind::MD5, llvm::codeview::FileChecksumKind::SHA1, llvm::codeview::FileChecksumKind::SHA256 }
 
enum  llvm::codeview::LineFlags : uint16_t { llvm::codeview::LF_None = 0, llvm::codeview::LF_HaveColumns = 1 }
 
enum  llvm::codeview::CodeViewContainer { llvm::codeview::CodeViewContainer::ObjectFile, llvm::codeview::CodeViewContainer::Pdb }
 

Functions

RegisterId llvm::codeview::decodeFramePtrReg (EncodedFramePtrReg EncodedReg, CPUType CPU)
 
EncodedFramePtrReg llvm::codeview::encodeFramePtrReg (RegisterId Reg, CPUType CPU)
 
uint32_t llvm::codeview::alignOf (CodeViewContainer Container)
 

Macro Definition Documentation

◆ CV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS

#define CV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS (   Class)
Value:
inline Class operator|(Class a, Class b) { \
return static_cast<Class>( \
} \
inline Class operator&(Class a, Class b) { \
return static_cast<Class>( \
} \
inline Class operator~(Class a) { \
return static_cast<Class>( \
} \
inline Class &operator|=(Class &a, Class b) { \
a = a | b; \
return a; \
} \
inline Class &operator&=(Class &a, Class b) { \
a = a & b; \
return a; \
}

Definition at line 52 of file CodeView.h.

◆ CV_REGISTER

#define CV_REGISTER (   name,
  value 
)    name = value,

Definition at line 519 of file CodeView.h.

◆ CV_REGISTERS_ALL

#define CV_REGISTERS_ALL

Definition at line 518 of file CodeView.h.

◆ CV_SYMBOL

#define CV_SYMBOL (   name,
  val 
)    name = val,

Definition at line 48 of file CodeView.h.

◆ CV_TYPE

#define CV_TYPE (   name,
  val 
)    name = val,

Definition at line 34 of file CodeView.h.

◆ SYMBOL_RECORD

#define SYMBOL_RECORD (   lf_ename,
  value,
  name 
)    name = value,

Definition at line 41 of file CodeView.h.

◆ TYPE_RECORD

#define TYPE_RECORD (   lf_ename,
  value,
  name 
)    name = value,

Definition at line 27 of file CodeView.h.

a
=0.0 ? 0.0 :(a > 0.0 ? 1.0 :-1.0) a
Definition: README.txt:489
b
the resulting code requires compare and branches when and if the revised code is with conditional branches instead of More there is a byte word extend before each where there should be only and the condition codes are not remembered when the same two values are compared twice More LSR enhancements i8 and i32 load store addressing modes are identical int b
Definition: README.txt:418
type
AMD64 Optimization Manual has some nice information about optimizing integer multiplication by a constant How much of it applies to Intel s X86 implementation There are definite trade offs to xmm0 cvttss2siq rdx jb L3 subss xmm0 rax cvttss2siq rdx xorq rdx rax ret instead of xmm1 cvttss2siq rcx movaps xmm2 subss xmm2 cvttss2siq rax rdx xorq rax ucomiss xmm0 cmovb rax ret Seems like the jb branch has high likelihood of being taken It would have saved a few instructions It s not possible to reference and DH registers in an instruction requiring REX prefix divb and mulb both produce results in AH If isel emits a CopyFromReg which gets turned into a movb and that can be allocated a r8b r15b To get around isel emits a CopyFromReg from AX and then right shift it down by and truncate it It s not pretty but it works We need some register allocation magic to make the hack go which would often require a callee saved register Callees usually need to keep this value live for most of their body so it doesn t add a significant burden on them We currently implement this in however this is suboptimal because it means that it would be quite awkward to implement the optimization for callers A better implementation would be to relax the LLVM IR rules for sret arguments to allow a function with an sret argument to have a non void return type
Definition: README-X86-64.txt:70
llvm::operator|
APInt operator|(APInt a, const APInt &b)
Definition: APInt.h:2013
llvm::BitmaskEnumDetail::operator&=
E & operator&=(E &LHS, E RHS)
Definition: BitmaskEnum.h:131
llvm::operator~
APInt operator~(APInt v)
Unary bitwise complement operator.
Definition: APInt.h:1988
llvm::operator&
APInt operator&(APInt a, const APInt &b)
Definition: APInt.h:1993
llvm::tgtok::Class
@ Class
Definition: TGLexer.h:50
operator|=
Qualifiers operator|=(Qualifiers &Q1, Qualifiers Q2)
Definition: ItaniumDemangle.h:430