是否有任何 LLVM 内置方法允许使我的变量易失性或常量。
例如,如果我的 C 程序是,
#include<stdio.h>
int main() {
int x=1,y=2,z=10;
z=x+y;
return 0;
}
我想使用 LLVM 传递更改此程序,使其行为如下,
#include<stdio.h>
int main() {
volatile int x=1,y=2,z=10;
z=x+y;
return 0;
}
好的,我知道了。这将是简单的设置易失性(1)。
通行证看起来像这样,
for(Module::iterator F=M.begin(),e=M.end();F!=e;++F){
for(Function::iterator B=F->begin(),e=F->end();B!=e;++B){
for(BasicBlock::iterator i=B->begin(),e=B->end();i!=e;++i){
if(isa<StoreInst>(i)){
StoreInst *temps=dyn_cast<StoreInst>(i);
temps->setVolatile(1);
}
if(isa<LoadInst>(i)){
LoadInst *temps=dyn_cast<LoadInst>(i);
temps->setVolatile(1);
}
}
}
}