diff options
Diffstat (limited to 'lib/Target/JSBackend/JSBackend.cpp')
-rw-r--r-- | lib/Target/JSBackend/JSBackend.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/Target/JSBackend/JSBackend.cpp b/lib/Target/JSBackend/JSBackend.cpp index 5efd4c5684..eb3a6d1929 100644 --- a/lib/Target/JSBackend/JSBackend.cpp +++ b/lib/Target/JSBackend/JSBackend.cpp @@ -129,6 +129,7 @@ namespace { std::vector<std::string> Exports; // additional exports BlockAddressMap BlockAddresses; + bool CanValidate; bool UsesSIMD; int InvokeState; // cycles between 0, 1 after preInvoke, 2 after call, 0 again after postInvoke. hackish, no argument there. CodeGenOpt::Level OptLevel; @@ -139,7 +140,7 @@ namespace { public: static char ID; JSWriter(formatted_raw_ostream &o, CodeGenOpt::Level OptLevel) - : ModulePass(ID), Out(o), UniqueNum(0), UsesSIMD(false), InvokeState(0), + : ModulePass(ID), Out(o), UniqueNum(0), CanValidate(true), UsesSIMD(false), InvokeState(0), OptLevel(OptLevel) {} virtual const char *getPassName() const { return "JavaScript backend"; } @@ -355,6 +356,7 @@ namespace { assert(VT->getElementType()->getPrimitiveSizeInBits() == 32); assert(VT->getNumElements() == 4); UsesSIMD = true; + CanValidate = false; } std::string getPtrLoad(const Value* Ptr); @@ -2035,6 +2037,10 @@ void JSWriter::printModuleBody() { } Out << "],"; + Out << "\"canValidate\": "; + Out << (CanValidate ? "1" : "0"); + Out << ","; + Out << "\"simd\": "; Out << (UsesSIMD ? "1" : "0"); Out << ","; |