You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
#include "Optimizer.h"
|
|
|
|
|
|
|
|
#include "preprocessor/llvm_includes_start.h"
|
|
|
|
#include <llvm/PassManager.h>
|
|
|
|
#include <llvm/Transforms/Scalar.h>
|
|
|
|
#include <llvm/Transforms/IPO.h>
|
|
|
|
#include "preprocessor/llvm_includes_end.h"
|
|
|
|
|
|
|
|
namespace dev
|
|
|
|
{
|
|
|
|
namespace eth
|
|
|
|
{
|
|
|
|
namespace jit
|
|
|
|
{
|
|
|
|
|
|
|
|
bool optimize(llvm::Module& _module)
|
|
|
|
{
|
|
|
|
auto pm = llvm::PassManager{};
|
|
|
|
//pm.add(llvm::createFunctionInliningPass(2, 2)); // Produces invalid IR
|
|
|
|
pm.add(llvm::createCFGSimplificationPass());
|
|
|
|
//pm.add(llvm::createInstructionCombiningPass()); // Produces invalid runtime results
|
|
|
|
pm.add(llvm::createAggressiveDCEPass());
|
|
|
|
pm.add(llvm::createLowerSwitchPass());
|
|
|
|
return pm.run(_module);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|