//===- BitcodeMunge.h - Subzero Bitcode Munger ------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // Test harness for testing malformed bitcode files in Subzero. Uses NaCl's // bitcode munger to do this. // //===----------------------------------------------------------------------===// #ifndef SUBZERO_UNITTEST_BITCODEMUNGE_H #define SUBZERO_UNITTEST_BITCODEMUNGE_H #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunused-parameter" #include "llvm/Bitcode/NaCl/NaClBitcodeMunge.h" #pragma clang diagnostic pop #include "IceClFlags.h" #include "IceGlobalContext.h" namespace IceTest { // Class to run tests on Subzero's bitcode parser. Runs a Subzero // translation, using (possibly) edited bitcode record values. For // more details on how to represent the input arrays, see // NaClBitcodeMunge.h. class SubzeroBitcodeMunger : public llvm::NaClBitcodeMunger { public: SubzeroBitcodeMunger(const uint64_t Records[], size_t RecordSize, uint64_t RecordTerminator) : llvm::NaClBitcodeMunger(Records, RecordSize, RecordTerminator) { resetMungeFlags(); } /// Runs PNaClTranslator to parse and (optionally) translate bitcode records /// (with defined record Munges), and puts output into DumpResults. Returns /// true if parse is successful. bool runTest(const uint64_t Munges[], size_t MungeSize, bool DisableTranslation = false); /// Same as above, but without any edits. bool runTest(bool DisableTranslation = false) { uint64_t NoMunges[] = {0}; return runTest(NoMunges, 0, DisableTranslation); } private: void resetMungeFlags(); }; } // end of namespace IceTest #endif // SUBZERO_UNITTEST_BITCODEMUNGE_H