1//===- llvm/Support/DiagnosticInfo.cpp - Diagnostic Definitions -*- 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-exception 6// 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 Stream << V.getName(); 101 return *this; 102} 103 104DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const Module &M) { 105 Stream << M.getModuleIdentifier(); 106 return *this; 107} 108 109// Other types. 110DiagnosticPrinter &DiagnosticPrinterRawOStream:: 111operator<<(const SMDiagnostic &Diag) { 112 // We don't have to print the SMDiagnostic kind, as the diagnostic severity 113 // is printed by the diagnostic handler. 114 Diag.print("", Stream, /*ShowColors=*/true, /*ShowKindLabel=*/false); 115 return *this; 116} 117