llvm-main.cpp   [plain text]


/* llvm-main.cpp: defines a C++ version of main() for cc1, cc1plus, etc.
Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
Contributed by Chris Lattner (sabre@nondot.org)

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2, or (at your option) any later
version.

GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING.  If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.  */

#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/PrettyStackTrace.h"

extern "C" {
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "errors.h"
#include "tm.h"
#include "toplev.h"

extern const char *progname;
}

static void LLVMErrorHandler(void *UserData, const std::string &Message) {
  fprintf(stderr, "%s: error in backend: %s\n", progname, Message.c_str());
  exit(FATAL_EXIT_CODE);
}

// We define main() to call toplev_main(), which is defined in toplev.c.
// We do this so that C++ code has its static constructors called as required.

int main (int argc, char **argv) {
  llvm::PrettyStackTraceProgram X(argc, argv);
  llvm::llvm_install_error_handler(LLVMErrorHandler);
  return toplev_main (argc, (const char **) argv);
}