Enable fine grained yul optimizer fuzzing

This commit is contained in:
Bhargava Shastry
2021-01-19 18:22:59 +01:00
parent 0b023b893e
commit b3dd83a20b
8 changed files with 89 additions and 15 deletions
+18 -4
View File
@@ -19,16 +19,24 @@
#include <fstream>
#include <test/tools/ossfuzz/yulProto.pb.h>
#include <test/tools/fuzzer_common.h>
#include <test/tools/ossfuzz/protoToYul.h>
#include <src/libfuzzer/libfuzzer_macro.h>
#include <test/tools/fuzzer_common.h>
#include <test/libyul/YulOptimizerTestCommon.h>
#include <libyul/AssemblyStack.h>
#include <liblangutil/EVMVersion.h>
#include <libyul/Exceptions.h>
#include <libyul/backends/evm/EVMDialect.h>
#include <liblangutil/EVMVersion.h>
#include <src/libfuzzer/libfuzzer_macro.h>
using namespace solidity;
using namespace solidity::yul;
using namespace solidity::yul::test;
using namespace solidity::yul::test::yul_fuzzer;
using namespace solidity::langutil;
using namespace std;
@@ -69,5 +77,11 @@ DEFINE_PROTO_FUZZER(Program const& _input)
yulAssert(false, "Proto fuzzer generated malformed program");
// Optimize
stack.optimize();
YulOptimizerTestCommon optimizerTest(
stack.parserResult(),
EVMDialect::strictAssemblyForEVMObjects(version)
);
optimizerTest.setStep(optimizerTest.randomOptimiserStep(_input.step()));
shared_ptr<solidity::yul::Block> astBlock = optimizerTest.run();
yulAssert(astBlock != nullptr, "Optimiser error.");
}