gpt4 book ai didi

compiler-construction - def-use 指令链

转载 作者:行者123 更新时间:2023-12-02 13:53:49 25 4
gpt4 key购买 nike

我是一个 LLVM 新手,想要获取示例代码的所有指令的 use-def 链,为此我使用以下代码。

示例代码:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

#define ARRAY_SIZE 5

int main() {
int x, y, holder;
int k,z,f,i;
z=0;
f=0;
k=0;

for(x = 0; x < ARRAY_SIZE; x++)
for(y = 0; y < ARRAY_SIZE-1; y++)
if(x+y>10) {
holder = x+y;
k=z+1;
f=k+x;
if (i>k)
i=i+1;
}
// return 1;

}

密码:

virtual bool runOnFunction(Function &F) {
std::vector<Instruction*> worklist;

for(inst_iterator I = inst_begin(F), E = inst_end(F); I != E; ++I){
worklist.push_back(&*I);
}

for(std::vector<Instruction*>::iterator iter = worklist.begin();
iter != worklist.end(); ++iter){

Instruction* instr = *iter;
errs() << "def: " <<*instr << "\n";

for(Value::use_iterator i = instr->use_begin(), ie = instr->use_end();
i!=ie; ++i){

Value *v = *i;
Instruction *vi = dyn_cast<Instruction>(*i);
errs() << "\t\t" << *vi << "\n";
}
}

return false;
}

输出:def:ret void

但是我的输出不是我的目标,有人可以帮助我吗?

谢谢

最佳答案

示例代码中的

main() 除了更改局部变量的值之外什么也不做 - 它不可能对任何东西产生任何外部可见的影响,因为它不调用任何外部函数,更改任何全局变量,或取消引用任何指针。

因此,我怀疑在运行密码之前,除了返回之外,一切都被优化了。

关于compiler-construction - def-use 指令链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5922380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com