Path: blob/main/contrib/llvm-project/llvm/tools/llvm-pdbutil/PrettyBuiltinDumper.cpp
35260 views
//===- PrettyBuiltinDumper.cpp ---------------------------------- *- C++ *-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#include "PrettyBuiltinDumper.h"910#include "llvm/DebugInfo/PDB/Native/LinePrinter.h"11#include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h"1213using namespace llvm;14using namespace llvm::pdb;1516BuiltinDumper::BuiltinDumper(LinePrinter &P)17: PDBSymDumper(false), Printer(P) {}1819void BuiltinDumper::start(const PDBSymbolTypeBuiltin &Symbol) {20if (Symbol.isConstType())21WithColor(Printer, PDB_ColorItem::Keyword).get() << "const ";22if (Symbol.isVolatileType())23WithColor(Printer, PDB_ColorItem::Keyword).get() << "volatile ";24WithColor(Printer, PDB_ColorItem::Type).get() << getTypeName(Symbol);25}2627StringRef BuiltinDumper::getTypeName(const PDBSymbolTypeBuiltin &Symbol) {28PDB_BuiltinType Type = Symbol.getBuiltinType();29switch (Type) {30case PDB_BuiltinType::Float:31if (Symbol.getLength() == 4)32return "float";33return "double";34case PDB_BuiltinType::UInt:35switch (Symbol.getLength()) {36case 8:37return "unsigned __int64";38case 4:39return "unsigned int";40case 2:41return "unsigned short";42case 1:43return "unsigned char";44default:45return "unsigned";46}47case PDB_BuiltinType::Int:48switch (Symbol.getLength()) {49case 8:50return "__int64";51case 4:52return "int";53case 2:54return "short";55case 1:56return "char";57default:58return "int";59}60case PDB_BuiltinType::Char:61return "char";62case PDB_BuiltinType::WCharT:63return "wchar_t";64case PDB_BuiltinType::Void:65return "void";66case PDB_BuiltinType::Long:67return "long";68case PDB_BuiltinType::ULong:69return "unsigned long";70case PDB_BuiltinType::Bool:71return "bool";72case PDB_BuiltinType::Currency:73return "CURRENCY";74case PDB_BuiltinType::Date:75return "DATE";76case PDB_BuiltinType::Variant:77return "VARIANT";78case PDB_BuiltinType::Complex:79return "complex";80case PDB_BuiltinType::Bitfield:81return "bitfield";82case PDB_BuiltinType::BSTR:83return "BSTR";84case PDB_BuiltinType::HResult:85return "HRESULT";86case PDB_BuiltinType::BCD:87return "HRESULT";88case PDB_BuiltinType::Char16:89return "char16_t";90case PDB_BuiltinType::Char32:91return "char32_t";92case PDB_BuiltinType::Char8:93return "char8_t";94case PDB_BuiltinType::None:95return "...";96}97llvm_unreachable("Unknown PDB_BuiltinType");98}99100101