web*_*key 5 llvm llvm-clang llvm-ir llvm-c++-api
对于下面的分支指令
br i1 %cmp, label %if.then, label %if.end, !dbg !35
Run Code Online (Sandbox Code Playgroud)
由于llvm是SSA,我可以直接访问操作数0,来判断比较是否正确。该类型的计算结果为 i1,但我在提取该值时遇到问题(true 或 false)
BranchInst &I;
Value *val = I.getOperand(0);
Run Code Online (Sandbox Code Playgroud)
类型产生 i1 类型,但是当我尝试转换为
ConstantInt *cint = dyn_cast<ConstantInt>(val)铸造似乎不起作用?我该怎么办
web*_*key 10
回答我自己的问题
BranchInst &I;
Module* module;
IRBuilder<> irbuilder(&I);
Value* value = irbuilder.CreateIntCast(I.getCondition(),
Type::getInt32Ty(module->getContext()), false);
Run Code Online (Sandbox Code Playgroud)
这应该将 i1 转换为 i32。
| 归档时间: |
|
| 查看次数: |
3354 次 |
| 最近记录: |