打开 Flattening.cpp,从第 39 行可以看到注册的 Pass 名称是 flattening;第 45 行调用 toObfuscate判断需要处理的函数是否有 fla标识(为了调试方便,我们将这部分代码注释掉),如果判断有,就调用flatten函数,这个函数是我们分析的关键。Flattening.cpp 文件的内容如下: namespace...
Function *tmp = &F; // Do we obfuscate // if (toObfuscate(flag, tmp, "fla")) { if (flatten(tmp)) { ++Flattened; } // } return false; } 首先运行的是runOnFunction,因为我是在源码树外开发的Pass所以把原版的参数判断代码注释了,...
成员函数展示了一个pass应该如何实现,例如它始终在特定context下工作在IRModule中,所有的pass都被设计在一个ModuletoModule的管理器中。因此,由 pass infra 控制的优化将始终更新整个module。 已经创建了几个子类来实现不同类型的优化pass,例如,function-level passes, module-level passes, and sequential passes。每个...
Hi! I'm looking for a method to pass vector variable as output of MATLAB Function block in Simulink. Let's say that I have a structure that I wan to pass and it contains only scalar variables: var_struct=struct('A',A,'B',B,'C',C); ...
runtime::TypedPackedFunc<Function(Function, IRModule, PassContext)> pass_func = [=](Function f, IRModule m, PassContext pc) {boollink_params =false; Executor executor = m->GetAttr<Executor>(tvm::attr::kExecutor).value_or(NullValue<Executor>()); ...
Function *getCalledFunction() const: 这个方法用于获取被调用的函数指针。如果函数调用是一个直接调用(CallInst),并且被调用函数是已知的,那么该方法将返回被调用函数的指针;否则,返回nullptr。 bool isIndirectCall() const: 这个方法用于检查函数调用是否是间接调用。如果函数调用是间接调用,那么它的目标函数是在运行...
所有FunctionPass在程序中的每个方法上执行,独立于程序中的所有其它方法。 FunctionPass子类不需要以特定顺序执行,并且不会修改外部方法。 明确地说,FunctionPass子类不允许检查或修改当前正在处理的方法以外的其它方法,也不允许添加或删除当前模块的方法和全局变量。AMDGPU后端中的AMDGPUPromoteAllocaToVector pass就是一个...
Pass integers by reference: voidswapNums(int&x,int&y) { intz = x; x = y; y = z; } intmain() { intfirstNum =10; intsecondNum =20; cout <<"Before swap: "<<"\n"; cout << firstNum << secondNum <<"\n"; // Call the function, which will change the values of firstNum...
明确地说,FunctionPass子类不允许检查或修改当前正在处理的方法以外的其它方法,也不允许添加或删除当前模块的方法和全局变量。AMDGPU后端中的AMDGPUPromoteAllocaToVector pass就是一个function pass。这个pass通过将Alloc指令转换为向量消除Alloc指令: classAMDGPUPromoteAllocaToVector:publicFunctionPass{……boolrunOnFunctio...
由于常量折叠发生在单个函数上,我们应该直观地通过 CreateFunctionPass为其创建一个 FunctionPass。 pass_func 作为packed function返回,该函数在 IRModule 中的每个function上调用 Expr to Expr API...