Index: tools/llvm-as-parasitic-coverage-repro/CMakeLists.txt =================================================================== --- tools/llvm-as-parasitic-coverage-repro/CMakeLists.txt (revision 0) +++ tools/llvm-as-parasitic-coverage-repro/CMakeLists.txt (working copy) @@ -0,0 +1,10 @@ +if( LLVM_USE_SANITIZE_COVERAGE ) + set(LLVM_LINK_COMPONENTS + AsmParser + BitWriter + Core + Support + ) + add_llvm_tool(llvm-as-parasitic-coverage-repro + llvm-as-parasitic-coverage-repro.cpp) +endif() Index: tools/llvm-as-parasitic-coverage-repro/llvm-as-parasitic-coverage-repro.cpp =================================================================== --- tools/llvm-as-parasitic-coverage-repro/llvm-as-parasitic-coverage-repro.cpp (revision 0) +++ tools/llvm-as-parasitic-coverage-repro/llvm-as-parasitic-coverage-repro.cpp (working copy) @@ -0,0 +1,28 @@ +#include "llvm/ADT/StringRef.h" +#include "llvm/AsmParser/Parser.h" +#include "llvm/IR/LLVMContext.h" +#include "llvm/IR/Module.h" +#include "llvm/IR/Verifier.h" +#include "llvm/Support/ErrorHandling.h" +#include "llvm/Support/MemoryBuffer.h" +#include "llvm/Support/raw_ostream.h" +#include "llvm/Support/SourceMgr.h" +using namespace llvm; +extern "C" void TestOneInput() { + StringRef Input("declare i32 @llvm.x86.sse42.crc32.32.8(i32, i8) nounwind"); + std::unique_ptr MemBuf = MemoryBuffer::getMemBufferCopy(Input); + SMDiagnostic Err; + std::unique_ptr Context(new LLVMContext); + std::unique_ptr M; + M = parseAssembly(MemBuf->getMemBufferRef(), Err, *Context.get()); + if (M.get()) + verifyModule(*M.get()); +} + +int main(int argc, char **argv) { + assert(argc == 2); + int NumIter = atoi(argv[1]); + for (int i = 0; i < NumIter; i++) { + TestOneInput(); + } +}