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-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 20 using namespace llvm; 21 operator <<(char C)22DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(char C) { 23 Stream << C; 24 return *this; 25 } 26 operator <<(unsigned char C)27DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(unsigned char C) { 28 Stream << C; 29 return *this; 30 } 31 operator <<(signed char C)32DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(signed char C) { 33 Stream << C; 34 return *this; 35 } 36 operator <<(StringRef Str)37DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(StringRef Str) { 38 Stream << Str; 39 return *this; 40 } 41 operator <<(const char * Str)42DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const char *Str) { 43 Stream << Str; 44 return *this; 45 } 46 operator <<(const std::string & Str)47DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<( 48 const std::string &Str) { 49 Stream << Str; 50 return *this; 51 } 52 operator <<(unsigned long N)53DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(unsigned long N) { 54 Stream << N; 55 return *this; 56 } operator <<(long N)57DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(long N) { 58 Stream << N; 59 return *this; 60 } 61 operator <<(unsigned long long N)62DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<( 63 unsigned long long N) { 64 Stream << N; 65 return *this; 66 } 67 operator <<(long long N)68DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(long long N) { 69 Stream << N; 70 return *this; 71 } 72 operator <<(const void * P)73DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const void *P) { 74 Stream << P; 75 return *this; 76 } 77 operator <<(unsigned int N)78DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(unsigned int N) { 79 Stream << N; 80 return *this; 81 } 82 operator <<(int N)83DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(int N) { 84 Stream << N; 85 return *this; 86 } 87 operator <<(double N)88DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(double N) { 89 Stream << N; 90 return *this; 91 } 92 operator <<(const Twine & Str)93DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const Twine &Str) { 94 Str.print(Stream); 95 return *this; 96 } 97 98 // IR related types. operator <<(const Value & V)99DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const Value &V) { 100 Stream << V.getName(); 101 return *this; 102 } 103 operator <<(const Module & M)104DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const Module &M) { 105 Stream << M.getModuleIdentifier(); 106 return *this; 107 } 108 109 // Other types. 110 DiagnosticPrinter &DiagnosticPrinterRawOStream:: operator <<(const SMDiagnostic & Diag)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