forked from llvm/llvm-project
- Notifications
You must be signed in to change notification settings - Fork 339
/
Copy pathPrettyBuiltinDumper.cpp
99 lines (93 loc) · 2.68 KB
/
PrettyBuiltinDumper.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
//===- PrettyBuiltinDumper.cpp ---------------------------------- *- C++ *-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include"PrettyBuiltinDumper.h"
#include"llvm/DebugInfo/PDB/Native/LinePrinter.h"
#include"llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h"
usingnamespacellvm;
usingnamespacellvm::pdb;
BuiltinDumper::BuiltinDumper(LinePrinter &P)
: PDBSymDumper(false), Printer(P) {}
voidBuiltinDumper::start(const PDBSymbolTypeBuiltin &Symbol) {
if (Symbol.isConstType())
WithColor(Printer, PDB_ColorItem::Keyword).get() << "const ";
if (Symbol.isVolatileType())
WithColor(Printer, PDB_ColorItem::Keyword).get() << "volatile ";
WithColor(Printer, PDB_ColorItem::Type).get() << getTypeName(Symbol);
}
StringRef BuiltinDumper::getTypeName(const PDBSymbolTypeBuiltin &Symbol) {
PDB_BuiltinType Type = Symbol.getBuiltinType();
switch (Type) {
case PDB_BuiltinType::Float:
if (Symbol.getLength() == 4)
return"float";
return"double";
case PDB_BuiltinType::UInt:
switch (Symbol.getLength()) {
case8:
return"unsigned __int64";
case4:
return"unsigned int";
case2:
return"unsigned short";
case1:
return"unsigned char";
default:
return"unsigned";
}
case PDB_BuiltinType::Int:
switch (Symbol.getLength()) {
case8:
return"__int64";
case4:
return"int";
case2:
return"short";
case1:
return"char";
default:
return"int";
}
case PDB_BuiltinType::Char:
return"char";
case PDB_BuiltinType::WCharT:
return"wchar_t";
case PDB_BuiltinType::Void:
return"void";
case PDB_BuiltinType::Long:
return"long";
case PDB_BuiltinType::ULong:
return"unsigned long";
case PDB_BuiltinType::Bool:
return"bool";
case PDB_BuiltinType::Currency:
return"CURRENCY";
case PDB_BuiltinType::Date:
return"DATE";
case PDB_BuiltinType::Variant:
return"VARIANT";
case PDB_BuiltinType::Complex:
return"complex";
case PDB_BuiltinType::Bitfield:
return"bitfield";
case PDB_BuiltinType::BSTR:
return"BSTR";
case PDB_BuiltinType::HResult:
return"HRESULT";
case PDB_BuiltinType::BCD:
return"HRESULT";
case PDB_BuiltinType::Char16:
return"char16_t";
case PDB_BuiltinType::Char32:
return"char32_t";
case PDB_BuiltinType::Char8:
return"char8_t";
case PDB_BuiltinType::None:
return"...";
}
llvm_unreachable("Unknown PDB_BuiltinType");
}