| Index: src/IceTranslator.cpp
 | 
| diff --git a/src/IceTranslator.cpp b/src/IceTranslator.cpp
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..7eb0fc0a632c17ae835da6b68411ff2c5d39b03c
 | 
| --- /dev/null
 | 
| +++ b/src/IceTranslator.cpp
 | 
| @@ -0,0 +1,58 @@
 | 
| +//===- subzero/src/IceTranslator.cpp - ICE to machine code ------*- C++ -*-===//
 | 
| +//
 | 
| +//                        The Subzero Code Generator
 | 
| +//
 | 
| +// This file is distributed under the University of Illinois Open Source
 | 
| +// License. See LICENSE.TXT for details.
 | 
| +//
 | 
| +//===----------------------------------------------------------------------===//
 | 
| +//
 | 
| +// This file defines the general driver class for translating ICE to
 | 
| +// machine code.
 | 
| +//
 | 
| +//===----------------------------------------------------------------------===//
 | 
| +
 | 
| +#include "IceTranslator.h"
 | 
| +
 | 
| +#include "IceCfg.h"
 | 
| +#include "IceClFlags.h"
 | 
| +#include "IceTargetLowering.h"
 | 
| +
 | 
| +#include <iostream>
 | 
| +
 | 
| +using namespace Ice;
 | 
| +
 | 
| +Translator::~Translator() {}
 | 
| +
 | 
| +void Translator::translateFcn(Ice::Cfg *Fcn) {
 | 
| +  Func.reset(Fcn);
 | 
| +  if (Flags.DisableInternal)
 | 
| +    Func->setInternal(false);
 | 
| +  if (Flags.DisableTranslation) {
 | 
| +    Func->dump();
 | 
| +  } else {
 | 
| +    Ice::Timer TTranslate;
 | 
| +    Func->translate();
 | 
| +    if (Flags.SubzeroTimingEnabled) {
 | 
| +      std::cerr << "[Subzero timing] Translate function "
 | 
| +                << Func->getFunctionName() << ": " << TTranslate.getElapsedSec()
 | 
| +                << " sec\n";
 | 
| +    }
 | 
| +    if (Func->hasError()) {
 | 
| +      std::cerr << "ICE translation error: " << Func->getError() << "\n";
 | 
| +      ExitStatus = 1;
 | 
| +    }
 | 
| +
 | 
| +    Ice::Timer TEmit;
 | 
| +    Func->emit();
 | 
| +    if (Flags.SubzeroTimingEnabled) {
 | 
| +      std::cerr << "[Subzero timing] Emit function " << Func->getFunctionName()
 | 
| +                << ": " << TEmit.getElapsedSec() << " sec\n";
 | 
| +    }
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +void Translator::emitConstants() {
 | 
| +  if (!Flags.DisableTranslation && Func)
 | 
| +    Func->getTarget()->emitConstants();
 | 
| +}
 | 
| 
 |