<div dir="ltr">Hi Rahul,<div><br></div><div>Thank you very much!</div><div><br></div><div>Sincerely,</div><div>Shulin</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">rahul utkoor <<a href="mailto:rahulutkoor4887@gmail.com">rahulutkoor4887@gmail.com</a>> 于2021年6月10日周四 下午9:21写道:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi,<div><br></div><div>LLVM modularity provides developers a unique opportunity to come up with better design decisions on individual components. Your questions related to "<b>Operators and ConstantExprs</b>", I suggest you spend some time, and understand the passes that are responsible for generating those instructions. </div><div>As the code base is really huge and many smart people from different parts of the world are contributing to this project, there might be some things that can get missed in LangRef. In such a case, many times I used gdb/lldb debugger tools for understanding the pipeline.</div><div><br></div><div>Use debugging tools and identify the logic that is responsible for generating instructions(<b>Operators and ConstantExprs</b>). I am giving you directions to get started with understanding LLVM internals.</div><div><br></div><div><br></div><div>Thanks,</div><div>Rahul Utkoor</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jun 10, 2021 at 4:59 PM jeniffer lesley <<a href="mailto:jenifferlesley7@gmail.com" target="_blank">jenifferlesley7@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">I second this question. I never undersrood this in LLVM IR. LangRef fails to explain this.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jun 10, 2021, 4:46 PM 周书林 via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi, <div><br></div><div>Thank you for your suggestions. </div><div>I have learnt the basic IR structures in simple programs, but not all the objects could be generated. As I mentioned, about the Operators and ConstantExprs. I only got GEPOperator objects from .bc of MySQL. So is there any reference to learn about the relationship between those classes in IR? </div><div><br></div><div>Sincerely,</div><div>Shulin</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">rahul utkoor <<a href="mailto:rahulutkoor4887@gmail.com" rel="noreferrer" target="_blank">rahulutkoor4887@gmail.com</a>> 于2021年6月10日周四 下午5:25写道:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div>Hello,<div dir="auto">Since you are starting to learn IR, I recommend you to start with one simple program, compile the program, genreate CFG and understand the hierarchy of types/operands/instructions.</div><div dir="auto">It helped me to understand the compilation pipeline in a quick way.</div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">Thanks,</div><div dir="auto">Rahul Utkoor</div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 10 Jun, 2021, 2:08 pm 周书林 via llvm-dev, <<a href="mailto:llvm-dev@lists.llvm.org" rel="noreferrer" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hello everyone,<div><br></div><div>I am learning the IR in LLVM and trying to do some analysis. Now I am doing a dataflow analysis via the def-use chain provided by Users.</div><div><br></div><div>In my opinion, the Users of a Value should be an instruction. However, when I iterate the User of a Value, sometimes I get an Operator, like GEPOperator, or an ConstantExpr.</div><div>I am quite confused about these situations. My question is, what is Operator in IR? and what is the difference between Operator and Instruction? Why can I get a GEPOperator as an Operand in a instruction rather than two instruction( a gep instruction and the next User instruction) ?</div><div><br></div><div>Best regards,</div><div>Shulin</div></div>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" rel="noreferrer noreferrer" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer noreferrer noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div></div></div>
</blockquote></div>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" rel="noreferrer" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>
</blockquote></div>
</blockquote></div>