LCOV - code coverage report
Current view: top level - lib/TableGen - Error.cpp (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 16 38 42.1 %
Date: 2017-09-14 15:23:50 Functions: 5 11 45.5 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===- Error.cpp - tblgen error handling helper routines --------*- 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 contains error handling helper routines to pretty-print diagnostic
      11             : // messages from tblgen.
      12             : //
      13             : //===----------------------------------------------------------------------===//
      14             : 
      15             : #include "llvm/TableGen/Error.h"
      16             : #include "llvm/ADT/Twine.h"
      17             : #include "llvm/Support/Signals.h"
      18             : #include "llvm/Support/raw_ostream.h"
      19             : #include <cstdlib>
      20             : 
      21             : namespace llvm {
      22             : 
      23         275 : SourceMgr SrcMgr;
      24             : unsigned ErrorsPrinted = 0;
      25             : 
      26          11 : static void PrintMessage(ArrayRef<SMLoc> Loc, SourceMgr::DiagKind Kind,
      27             :                          const Twine &Msg) {
      28             :   // Count the total number of errors printed.
      29             :   // This is used to exit with an error code if there were any errors.
      30          11 :   if (Kind == SourceMgr::DK_Error)
      31          11 :     ++ErrorsPrinted;
      32             : 
      33          11 :   SMLoc NullLoc;
      34          11 :   if (Loc.empty())
      35           0 :     Loc = NullLoc;
      36          22 :   SrcMgr.PrintMessage(Loc.front(), Kind, Msg);
      37          11 :   for (unsigned i = 1; i < Loc.size(); ++i)
      38           0 :     SrcMgr.PrintMessage(Loc[i], SourceMgr::DK_Note,
      39             :                         "instantiated from multiclass");
      40          11 : }
      41             : 
      42           0 : void PrintWarning(ArrayRef<SMLoc> WarningLoc, const Twine &Msg) {
      43           0 :   PrintMessage(WarningLoc, SourceMgr::DK_Warning, Msg);
      44           0 : }
      45             : 
      46           0 : void PrintWarning(const char *Loc, const Twine &Msg) {
      47           0 :   SrcMgr.PrintMessage(SMLoc::getFromPointer(Loc), SourceMgr::DK_Warning, Msg);
      48           0 : }
      49             : 
      50           0 : void PrintWarning(const Twine &Msg) {
      51           0 :   errs() << "warning:" << Msg << "\n";
      52           0 : }
      53             : 
      54          11 : void PrintError(ArrayRef<SMLoc> ErrorLoc, const Twine &Msg) {
      55          11 :   PrintMessage(ErrorLoc, SourceMgr::DK_Error, Msg);
      56          11 : }
      57             : 
      58           1 : void PrintError(const char *Loc, const Twine &Msg) {
      59           3 :   SrcMgr.PrintMessage(SMLoc::getFromPointer(Loc), SourceMgr::DK_Error, Msg);
      60           1 : }
      61             : 
      62           0 : void PrintError(const Twine &Msg) {
      63           0 :   errs() << "error:" << Msg << "\n";
      64           0 : }
      65             : 
      66           0 : void PrintFatalError(const Twine &Msg) {
      67           0 :   PrintError(Msg);
      68             :   // The following call runs the file cleanup handlers.
      69           0 :   sys::RunInterruptHandlers();
      70           0 :   std::exit(1);
      71             : }
      72             : 
      73           0 : void PrintFatalError(ArrayRef<SMLoc> ErrorLoc, const Twine &Msg) {
      74           0 :   PrintError(ErrorLoc, Msg);
      75             :   // The following call runs the file cleanup handlers.
      76           0 :   sys::RunInterruptHandlers();
      77           0 :   std::exit(1);
      78             : }
      79             : 
      80         825 : } // end namespace llvm

Generated by: LCOV version 1.13