blob: 591d5e70cfd6ed7927774ed3438bb6e75cb63b5c [file] [log] [blame]
Zachary Turnera9054dd2017-01-11 00:35:43 +00001//===- PrettyBuiltinDumper.cpp ---------------------------------- *- C++ *-===//
Zachary Turneraa57c0a2015-02-26 23:51:49 +00002//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
Zachary Turnera9054dd2017-01-11 00:35:43 +000010#include "PrettyBuiltinDumper.h"
Zachary Turner2d11c202015-02-27 09:15:59 +000011#include "LinePrinter.h"
Zachary Turneraa57c0a2015-02-26 23:51:49 +000012#include "llvm-pdbdump.h"
13
14#include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h"
15
16using namespace llvm;
Zachary Turnerec28fc32016-05-04 20:32:13 +000017using namespace llvm::pdb;
Zachary Turneraa57c0a2015-02-26 23:51:49 +000018
Zachary Turner2d11c202015-02-27 09:15:59 +000019BuiltinDumper::BuiltinDumper(LinePrinter &P)
20 : PDBSymDumper(false), Printer(P) {}
Zachary Turneraa57c0a2015-02-26 23:51:49 +000021
Zachary Turnerb52d08d2015-03-01 06:51:29 +000022void BuiltinDumper::start(const PDBSymbolTypeBuiltin &Symbol) {
Adrian McCarthy08eb3432017-04-10 16:43:09 +000023 if (Symbol.isConstType())
24 WithColor(Printer, PDB_ColorItem::Keyword).get() << "const ";
25 if (Symbol.isVolatileType())
26 WithColor(Printer, PDB_ColorItem::Keyword).get() << "volatile ";
Rui Ueyamaf4acad32015-11-03 20:16:18 +000027 WithColor(Printer, PDB_ColorItem::Type).get() << getTypeName(Symbol);
28}
29
30StringRef BuiltinDumper::getTypeName(const PDBSymbolTypeBuiltin &Symbol) {
Zachary Turneraa57c0a2015-02-26 23:51:49 +000031 PDB_BuiltinType Type = Symbol.getBuiltinType();
32 switch (Type) {
33 case PDB_BuiltinType::Float:
Zachary Turner2d11c202015-02-27 09:15:59 +000034 if (Symbol.getLength() == 4)
Rui Ueyamaf4acad32015-11-03 20:16:18 +000035 return "float";
36 return "double";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000037 case PDB_BuiltinType::UInt:
Zachary Turner4d5535a2016-04-11 20:39:17 +000038 switch (Symbol.getLength()) {
39 case 8:
Rui Ueyamaf4acad32015-11-03 20:16:18 +000040 return "unsigned __int64";
Zachary Turner4d5535a2016-04-11 20:39:17 +000041 case 4:
42 return "unsigned int";
43 case 2:
44 return "unsigned short";
45 case 1:
46 return "unsigned char";
47 default:
48 return "unsigned";
49 }
Zachary Turneraa57c0a2015-02-26 23:51:49 +000050 case PDB_BuiltinType::Int:
Zachary Turner4d5535a2016-04-11 20:39:17 +000051 switch (Symbol.getLength()) {
52 case 8:
53 return "__int64";
54 case 4:
Rui Ueyamaf4acad32015-11-03 20:16:18 +000055 return "int";
Zachary Turner4d5535a2016-04-11 20:39:17 +000056 case 2:
57 return "short";
58 case 1:
59 return "char";
60 default:
61 return "int";
62 }
Zachary Turneraa57c0a2015-02-26 23:51:49 +000063 case PDB_BuiltinType::Char:
Rui Ueyamaf4acad32015-11-03 20:16:18 +000064 return "char";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000065 case PDB_BuiltinType::WCharT:
Rui Ueyamaf4acad32015-11-03 20:16:18 +000066 return "wchar_t";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000067 case PDB_BuiltinType::Void:
Rui Ueyamaf4acad32015-11-03 20:16:18 +000068 return "void";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000069 case PDB_BuiltinType::Long:
Rui Ueyamaf4acad32015-11-03 20:16:18 +000070 return "long";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000071 case PDB_BuiltinType::ULong:
Rui Ueyamaf4acad32015-11-03 20:16:18 +000072 return "unsigned long";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000073 case PDB_BuiltinType::Bool:
Rui Ueyamaf4acad32015-11-03 20:16:18 +000074 return "bool";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000075 case PDB_BuiltinType::Currency:
Rui Ueyamaf4acad32015-11-03 20:16:18 +000076 return "CURRENCY";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000077 case PDB_BuiltinType::Date:
Rui Ueyamaf4acad32015-11-03 20:16:18 +000078 return "DATE";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000079 case PDB_BuiltinType::Variant:
Rui Ueyamaf4acad32015-11-03 20:16:18 +000080 return "VARIANT";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000081 case PDB_BuiltinType::Complex:
Rui Ueyamaf4acad32015-11-03 20:16:18 +000082 return "complex";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000083 case PDB_BuiltinType::Bitfield:
Rui Ueyamaf4acad32015-11-03 20:16:18 +000084 return "bitfield";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000085 case PDB_BuiltinType::BSTR:
Rui Ueyamaf4acad32015-11-03 20:16:18 +000086 return "BSTR";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000087 case PDB_BuiltinType::HResult:
Rui Ueyamaf4acad32015-11-03 20:16:18 +000088 return "HRESULT";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000089 case PDB_BuiltinType::BCD:
Rui Ueyamaf4acad32015-11-03 20:16:18 +000090 return "HRESULT";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000091 default:
Rui Ueyamaf4acad32015-11-03 20:16:18 +000092 return "void";
Zachary Turneraa57c0a2015-02-26 23:51:49 +000093 }
94}