brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · 5ded234 Raw
122 lines · cpp
1//===- llvm/IR/DiagnosticPrinter.cpp - Diagnostic Printer -------*- 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-exception6//7//===----------------------------------------------------------------------===//8//9// This file defines a diagnostic printer relying on raw_ostream.10//11//===----------------------------------------------------------------------===//12 13#include "llvm/IR/DiagnosticPrinter.h"14#include "llvm/ADT/Twine.h"15#include "llvm/IR/Module.h"16#include "llvm/IR/Value.h"17#include "llvm/Support/SourceMgr.h"18#include "llvm/Support/raw_ostream.h"19 20using namespace llvm;21 22DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(char C) {23  Stream << C;24  return *this;25}26 27DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(unsigned char C) {28  Stream << C;29  return *this;30}31 32DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(signed char C) {33  Stream << C;34  return *this;35}36 37DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(StringRef Str) {38  Stream << Str;39  return *this;40}41 42DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const char *Str) {43  Stream << Str;44  return *this;45}46 47DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(48    const std::string &Str) {49  Stream << Str;50  return *this;51}52 53DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(unsigned long N) {54  Stream << N;55  return *this;56}57DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(long N) {58  Stream << N;59  return *this;60}61 62DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(63    unsigned long long N) {64  Stream << N;65  return *this;66}67 68DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(long long N) {69  Stream << N;70  return *this;71}72 73DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const void *P) {74  Stream << P;75  return *this;76}77 78DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(unsigned int N) {79  Stream << N;80  return *this;81}82 83DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(int N) {84  Stream << N;85  return *this;86}87 88DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(double N) {89  Stream << N;90  return *this;91}92 93DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const Twine &Str) {94  Str.print(Stream);95  return *this;96}97 98// IR related types.99DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const Value &V) {100  // Avoid printing '@' prefix for named functions.101  if (V.hasName())102    Stream << V.getName();103  else104    V.printAsOperand(Stream, /*PrintType=*/false);105 106  return *this;107}108 109DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const Module &M) {110  Stream << M.getModuleIdentifier();111  return *this;112}113 114// Other types.115DiagnosticPrinter &DiagnosticPrinterRawOStream::116operator<<(const SMDiagnostic &Diag) {117  // We don't have to print the SMDiagnostic kind, as the diagnostic severity118  // is printed by the diagnostic handler.119  Diag.print("", Stream, /*ShowColors=*/true, /*ShowKindLabel=*/false);120  return *this;121}122