<div dir="ltr">Hi <span style="font-family:arial,sans-serif;font-size:13px">Michael,</span><div><span style="font-family:arial,sans-serif;font-size:13px"> </span></div><div><span style="font-family:arial,sans-serif;font-size:13px">Thank you very much.</span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">But </span><span style="font-family:arial,sans-serif;font-size:13px">idx_begin/idx_end iterators can only be used through a getelementptr instruction, right? However, </span><span style="font-size:13px;font-family:arial,sans-serif">I think </span>value "i32* getelementptr inbounds (%struct.Args* @globalArg, i64 0, i32 2)" itself<span style="font-size:13px;font-family:arial,sans-serif"> is not a getelementptr instruction, so? Or could you tell me how can I get a getelementptr instruction first from this value?</span></div><div class="gmail_extra"><br clear="all"><div><div><br>--------------------------------------------<br>Qiuping Yi<br>Institute Of Software<br>Chinese Academy of Sciences</div></div>
<br><div class="gmail_quote">On Sat, Nov 22, 2014 at 4:49 PM, Michael Zolotukhin <span dir="ltr"><<a href="mailto:mzolotukhin@apple.com" target="_blank">mzolotukhin@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word">Hi Qiuping,<div><br></div><div>I guess you need to use getPointerOperand to access the pointer operand (@globalArg in your example) and idx_begin/idx_end iterators to access indexes. You can find a short description of these functions in documentation [1], or look at examples of their uses in the code, e.g. in lib/Transforms/InstCombine/*.cpp.</div><div><br></div><div>[1] <a href="http://llvm.org/doxygen/classllvm_1_1GetElementPtrInst.html" target="_blank">http://llvm.org/doxygen/classllvm_1_1GetElementPtrInst.html</a></div><div><br></div><div>Best regards,</div><div>Michael</div><div><br><div><div><div><blockquote type="cite"><div>On Nov 22, 2014, at 12:32 AM, Qiuping Yi <<a href="mailto:yiqiuping@gmail.com" target="_blank">yiqiuping@gmail.com</a>> wrote:</div><br><div><div dir="ltr"><div>Hi, all</div><div><br></div><div>I am a LLVM user. I want to get every element in the next instruction:</div><div><br></div><div>%0 = load i32* getelementptr inbounds (%struct.Args* @globalArg, i64 0, i32 2), align 4, !dbg !85, !clap !86</div><div><br></div><div>Now I can only get value "i32* getelementptr inbounds (%struct.Args* @globalArg, i64 0, i32 2)" through "getOperand(0)",</div><div>but I can not get "%struct.Args* @globalArg", "i64 0", and "i32 2" in this instruction.</div><div><br></div><div>I know I can get the indices of getelementptr instructions through "getOperand()", but now in the previous example, </div><div>I want to get the indices from a getlementptr value. How should I do? Thank you in advance. </div></div></div></blockquote></div></div><blockquote type="cite"><div><div><div><div dir="ltr"><br clear="all"><div><div>Best Regards!</div><div><br>--------------------------------------------<br>Qiuping Yi<br>Institute Of Software<br>Chinese Academy of Sciences</div></div>
</div></div></div>
_______________________________________________<br>LLVM Developers mailing list<br><a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br></div></blockquote></div><br></div></div></blockquote></div><br></div></div>