// -*- C++ -*- (c) 2015 Petr Rockai DIVINE_RELAX_WARNINGS #include #include DIVINE_UNRELAX_WARNINGS #include #include namespace lart { struct CompositePass : lart::Pass { std::vector< lart::Pass * > _passes; void append( lart::Pass *p ) { _passes.push_back( p ); } llvm::PreservedAnalyses run( llvm::Module &m ) override { auto result = llvm::PreservedAnalyses::all(); for ( auto p : _passes ) result.intersect( p->run( m ) ); return result; } }; }