Chromium Code Reviews| Index: src/IceTranslator.cpp | 
| diff --git a/src/IceTranslator.cpp b/src/IceTranslator.cpp | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..998091f8889a4486a6c68f11ef4bfc2553c51d22 | 
| --- /dev/null | 
| +++ b/src/IceTranslator.cpp | 
| @@ -0,0 +1,58 @@ | 
| +//===- subzero/src/IceTranslator.cpp - Translate IR to ICE ------*- C++ -*-===// | 
| 
 
jvoung (off chromium)
2014/07/02 22:07:33
ICE to machine code
 
Karl
2014/07/07 21:50:55
Done.
 
 | 
| +// | 
| +// 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(); | 
| +} |