2013-12-18 01:47:22 +08:00
|
|
|
//===- llvm/Support/DiagnosticInfo.cpp - Diagnostic Definitions -*- C++ -*-===//
|
|
|
|
//
|
|
|
|
// The LLVM Compiler Infrastructure
|
|
|
|
//
|
|
|
|
// This file is distributed under the University of Illinois Open Source
|
|
|
|
// License. See LICENSE.TXT for details.
|
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
//
|
2014-08-30 05:53:01 +08:00
|
|
|
// This file defines a diagnostic printer relying on raw_ostream.
|
2013-12-18 01:47:22 +08:00
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
|
|
|
#include "llvm/IR/DiagnosticPrinter.h"
|
2017-06-06 19:49:48 +08:00
|
|
|
#include "llvm/ADT/Twine.h"
|
2014-01-16 09:51:12 +08:00
|
|
|
#include "llvm/IR/Module.h"
|
2013-12-18 01:47:22 +08:00
|
|
|
#include "llvm/IR/Value.h"
|
2015-06-16 04:30:22 +08:00
|
|
|
#include "llvm/Support/SourceMgr.h"
|
2017-06-06 19:49:48 +08:00
|
|
|
#include "llvm/Support/raw_ostream.h"
|
2013-12-18 01:47:22 +08:00
|
|
|
|
|
|
|
using namespace llvm;
|
|
|
|
|
|
|
|
DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(char C) {
|
|
|
|
Stream << C;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(unsigned char C) {
|
|
|
|
Stream << C;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(signed char C) {
|
|
|
|
Stream << C;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(StringRef Str) {
|
|
|
|
Stream << Str;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const char *Str) {
|
|
|
|
Stream << Str;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(
|
|
|
|
const std::string &Str) {
|
|
|
|
Stream << Str;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(unsigned long N) {
|
|
|
|
Stream << N;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(long N) {
|
|
|
|
Stream << N;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(
|
|
|
|
unsigned long long N) {
|
|
|
|
Stream << N;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(long long N) {
|
|
|
|
Stream << N;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const void *P) {
|
|
|
|
Stream << P;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(unsigned int N) {
|
|
|
|
Stream << N;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(int N) {
|
|
|
|
Stream << N;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(double N) {
|
|
|
|
Stream << N;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const Twine &Str) {
|
2013-12-18 06:35:07 +08:00
|
|
|
Str.print(Stream);
|
2013-12-18 01:47:22 +08:00
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
// IR related types.
|
|
|
|
DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const Value &V) {
|
|
|
|
Stream << V.getName();
|
|
|
|
return *this;
|
|
|
|
}
|
2014-01-16 09:51:12 +08:00
|
|
|
|
|
|
|
DiagnosticPrinter &DiagnosticPrinterRawOStream::operator<<(const Module &M) {
|
|
|
|
Stream << M.getModuleIdentifier();
|
|
|
|
return *this;
|
|
|
|
}
|
2015-06-16 04:30:22 +08:00
|
|
|
|
|
|
|
// Other types.
|
|
|
|
DiagnosticPrinter &DiagnosticPrinterRawOStream::
|
|
|
|
operator<<(const SMDiagnostic &Diag) {
|
|
|
|
// We don't have to print the SMDiagnostic kind, as the diagnostic severity
|
|
|
|
// is printed by the diagnostic handler.
|
|
|
|
Diag.print("", Stream, /*ShowColors=*/true, /*ShowKindLabel=*/false);
|
|
|
|
return *this;
|
|
|
|
}
|