Update Subzero to start parsing PNaCl bitcode files.
This patch only handles global addresses in PNaCl bitcode files.
Function blocks are still not parsed. Also, factors out a common API
for translation, so that generated ICE can always be translated using
the same code.
BUG= https://code.google.com/p/nativeclient/issues/detail?id=3892
R=jvoung@chromium.org, stichnot@chromium.org
Review URL: https://codereview.chromium.org/361733002
diff --git a/src/llvm2ice.cpp b/src/llvm2ice.cpp
index 6d26cff53..822a0ce 100644
--- a/src/llvm2ice.cpp
+++ b/src/llvm2ice.cpp
@@ -14,12 +14,13 @@
//===----------------------------------------------------------------------===//
#include "IceCfg.h"
+#include "IceClFlags.h"
#include "IceConverter.h"
#include "IceDefs.h"
#include "IceTargetLowering.h"
#include "IceTypes.h"
+#include "PNaClTranslator.h"
-#include "llvm/IR/Constant.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
@@ -128,9 +129,15 @@
Ice::GlobalContext Ctx(Ls, Os, VMask, TargetArch, OptLevel, TestPrefix);
+ Ice::ClFlags Flags;
+ Flags.DisableInternal = DisableInternal;
+ Flags.SubzeroTimingEnabled = SubzeroTimingEnabled;
+ Flags.DisableTranslation = DisableTranslation;
+
if (BuildOnRead) {
- std::cerr << "Direct build from bitcode not implemented yet!\n";
- return 1;
+ Ice::PNaClTranslator Translator(&Ctx, Flags);
+ Translator.translate(IRFilename);
+ return Translator.getExitStatus();
} else {
// Parse the input LLVM IR file into a module.
SMDiagnostic Err;
@@ -189,8 +196,7 @@
}
GlobalLowering.reset();
- Ice::Converter Converter(&Ctx, DisableInternal, SubzeroTimingEnabled,
- DisableTranslation);
+ Ice::Converter Converter(&Ctx, Flags);
return Converter.convertToIce(Mod);
}
}