Example #1
0
void optimize( shared_ptr<module_vmcode> code, vector<optimization_options> opt_options )
{
	Module* mod = code->get_vm_module();

	FunctionPassManager fpm(mod);

	for( optimization_options opt_option: opt_options ){
		switch ( opt_option ){
			case opt_verify:
				for( Function& f: mod->getFunctionList() ){
					if(!f.empty()){
						verifyFunction(f, PrintMessageAction);
					}
				}
				break;
			case opt_preset_std_for_function:
				// createStandardFunctionPasses( &fpm, 1 );
				break;
		}
	}

	fpm.doInitialization();

	for( Function& f: mod->getFunctionList() ){
		if(!f.empty()){
			fpm.run(f);
		}
	}
}