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(); |
| +} |