blob: b45fcd2bb219c504bcdf53bae973a6d4a5bb6d63 [file] [log] [blame]
// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
#include <memory>
#include "llvm/ADT/StringRef.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "llvm/IRReader/IRReader.h"
#include "llvm/Support/InitLLVM.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/Support/WithColor.h"
using namespace llvm;
namespace {
StringRef tool_name;
LLVM_ATTRIBUTE_NORETURN void error(Twine message) {
WithColor::error(errs(), "llvm-codegen") << message << ".\n";
errs().flush();
exit(1);
}
} // namespace
int main(int argc, char** argv) {
InitLLVM X(argc, argv);
LLVMContext context;
SMDiagnostic err;
if (argc != 2) error("exactly one argument is taken");
tool_name = argv[0];
std::unique_ptr<Module> mod = parseIRFile(argv[1], err, context);
if (mod == nullptr) {
err.print(tool_name.data(), errs());
exit(1);
}
mod->print(outs(), nullptr);
}