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