LLVM IR
文章平均质量分 50
我行我素的小鸭子
改BUG中
展开
-
I.users()
例如,一个变量的赋值指令可能会被多个指令所使用,如加减乘除指令、函数调用指令等等。在LLVM中,使用Value类的users()方法可以获取指令的用户列表。Value类是LLVM IR中所有值的基类,它有一个users()方法,返回一个指向所有用户的迭代器。这里需要注意的是,I.users()方法返回的是一个迭代器,这个迭代器指向的是用户的Use指针,而不是用户本身。在这个for循环中,使用%0->users()方法获取%0指令的用户列表,并使用auto*来遍历这个列表。对于每个用户U,输出它的信息即可。原创 2023-05-05 22:23:10 · 191 阅读 · 1 评论 -
getOperand
GetElementPtr->getOperand(0)获取的是要计算偏移量的指针对应的操作数,即%struct.foo* %foo;第一个操作数是要计算偏移量的指针,即%struct.foo* %foo,后面是偏移量的列表,即i32 0和i32 2。第一个操作数是要调用的函数名或函数指针,即i32 @printf,第二个操作数是函数的参数列表,即i8* %str。Load->getOperand(1)获取的是Load指令的第二个操作数,即要加载的值的地址。GetElementPtr指令。原创 2023-05-05 22:18:28 · 820 阅读 · 0 评论