1274955Ssvnmir//===- llvm/Support/DiagnosticInfo.cpp - Diagnostic Definitions -*- C++ -*-===// 2274955Ssvnmir// 3274955Ssvnmir// The LLVM Compiler Infrastructure 4274955Ssvnmir// 5274955Ssvnmir// This file is distributed under the University of Illinois Open Source 6274955Ssvnmir// License. See LICENSE.TXT for details. 7274955Ssvnmir// 8274955Ssvnmir//===----------------------------------------------------------------------===// 9274955Ssvnmir// 10280031Sdim// This file defines a diagnostic printer relying on raw_ostream. 11274955Ssvnmir// 12274955Ssvnmir//===----------------------------------------------------------------------===// 13274955Ssvnmir 14274955Ssvnmir#include "llvm/ADT/Twine.h" 15274955Ssvnmir#include "llvm/IR/DiagnosticPrinter.h" 16274955Ssvnmir#include "llvm/IR/Module.h" 17274955Ssvnmir#include "llvm/IR/Value.h" 18274955Ssvnmir#include "llvm/Support/raw_ostream.h" 19288943Sdim#include "llvm/Support/SourceMgr.h" 20274955Ssvnmir 21274955Ssvnmirusing namespace llvm; 22274955Ssvnmir 23274955SsvnmirDiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(char C) { 24274955Ssvnmir Stream << C; 25274955Ssvnmir return *this; 26274955Ssvnmir} 27274955Ssvnmir 28274955SsvnmirDiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(unsigned char C) { 29274955Ssvnmir Stream << C; 30274955Ssvnmir return *this; 31274955Ssvnmir} 32274955Ssvnmir 33274955SsvnmirDiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(signed char C) { 34274955Ssvnmir Stream << C; 35274955Ssvnmir return *this; 36274955Ssvnmir} 37274955Ssvnmir 38274955SsvnmirDiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(StringRef Str) { 39274955Ssvnmir Stream << Str; 40274955Ssvnmir return *this; 41274955Ssvnmir} 42274955Ssvnmir 43274955SsvnmirDiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const char *Str) { 44274955Ssvnmir Stream << Str; 45274955Ssvnmir return *this; 46274955Ssvnmir} 47274955Ssvnmir 48274955SsvnmirDiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<( 49274955Ssvnmir const std::string &Str) { 50274955Ssvnmir Stream << Str; 51274955Ssvnmir return *this; 52274955Ssvnmir} 53274955Ssvnmir 54274955SsvnmirDiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(unsigned long N) { 55274955Ssvnmir Stream << N; 56274955Ssvnmir return *this; 57274955Ssvnmir} 58274955SsvnmirDiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(long N) { 59274955Ssvnmir Stream << N; 60274955Ssvnmir return *this; 61274955Ssvnmir} 62274955Ssvnmir 63274955SsvnmirDiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<( 64274955Ssvnmir unsigned long long N) { 65274955Ssvnmir Stream << N; 66274955Ssvnmir return *this; 67274955Ssvnmir} 68274955Ssvnmir 69274955SsvnmirDiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(long long N) { 70274955Ssvnmir Stream << N; 71274955Ssvnmir return *this; 72274955Ssvnmir} 73274955Ssvnmir 74274955SsvnmirDiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const void *P) { 75274955Ssvnmir Stream << P; 76274955Ssvnmir return *this; 77274955Ssvnmir} 78274955Ssvnmir 79274955SsvnmirDiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(unsigned int N) { 80274955Ssvnmir Stream << N; 81274955Ssvnmir return *this; 82274955Ssvnmir} 83274955Ssvnmir 84274955SsvnmirDiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(int N) { 85274955Ssvnmir Stream << N; 86274955Ssvnmir return *this; 87274955Ssvnmir} 88274955Ssvnmir 89274955SsvnmirDiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(double N) { 90274955Ssvnmir Stream << N; 91274955Ssvnmir return *this; 92274955Ssvnmir} 93274955Ssvnmir 94274955SsvnmirDiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const Twine &Str) { 95274955Ssvnmir Str.print(Stream); 96274955Ssvnmir return *this; 97274955Ssvnmir} 98274955Ssvnmir 99274955Ssvnmir// IR related types. 100274955SsvnmirDiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const Value &V) { 101274955Ssvnmir Stream << V.getName(); 102274955Ssvnmir return *this; 103274955Ssvnmir} 104274955Ssvnmir 105274955SsvnmirDiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const Module &M) { 106274955Ssvnmir Stream << M.getModuleIdentifier(); 107274955Ssvnmir return *this; 108274955Ssvnmir} 109288943Sdim 110288943Sdim// Other types. 111288943SdimDiagnosticPrinter &DiagnosticPrinterRawOStream:: 112288943Sdimoperator<<(const SMDiagnostic &Diag) { 113288943Sdim // We don't have to print the SMDiagnostic kind, as the diagnostic severity 114288943Sdim // is printed by the diagnostic handler. 115288943Sdim Diag.print("", Stream, /*ShowColors=*/true, /*ShowKindLabel=*/false); 116288943Sdim return *this; 117288943Sdim} 118