| //===- 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 |