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