I've made some investigation on it and found the cause:<br><br><br>Exceprt from Instructions.h:<br><<<<br>CallInst::CallInst(Value *Func, InputIterator ArgBegin, InputIterator ArgEnd,<br> const Twine &NameStr, Instruction *InsertBefore)<br>
:<<...>><br>// Note: if you get compile errors about private methods then<br>// please update your code to use the high-level operand<br>// interfaces. See line 943 above.<br><br>===line 943:<br>
/// @brief coerce out-of-tree code to abandon the low-level interfaces<br> /// @detail see below comments and update your code to high-level interfaces<br> /// in LLVM v2.8-only code<br> /// - getOperand(N+1) ---> getArgOperand(N)<br>
/// - setOperand(N+1, V) ---> setArgOperand(N, V)<br> /// - getNumOperands() ---> getNumArgOperands()+1 // note the "+1"!<br> ///<br> /// in backward compatible code please consult llvm/Support/CallSite.h,<br>
/// you should create a callsite using the CallInst pointer and call its<br> /// methods<br> ///<br>>>><br><br>So, it seems, that it is a LLVM-2.8 new change in xxxOperand() functions<br><br>Now what I could easily do, to get latest buildable VMkit instance??<br>
<br>Look at this:<br><br>[ vmkit]$ find . -name "*.cpp" -o -name "*.h"|xargs grep -R -E "\<[gs]etOperand\>|\<getNumOperands\>"|wc -l<br>13<br><br>13 places, not so bad. But after changing it will require for build only newest LLVM-2.8, and all current users<br>
will be required to upgrade their llvm<br><br>Are users ready for changes?<br><br><font color="#888888">-Minas Abrahamyan</font><br><br><br><br><div class="gmail_quote">On Wed, Jul 7, 2010 at 5:09 PM, Minas Abrahamyan <span dir="ltr"><<a href="mailto:minas.subs@gmail.com">minas.subs@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><br>Excerpt from EscapeAnalysis.cpp:<br><<<<br> if (CallInst *CI = dyn_cast<CallInst>(I)) {<br>
Changed |= processMalloc(CI, CI->getOperand(1), CI->getOperand(2),<br>
CurLoop);<br> } else if (InvokeInst *CI = dyn_cast<InvokeInst>(I)) {<br> Changed |= processMalloc(CI, CI->getOperand(3), CI->getOperand(4),<br> CurLoop);<br>
}<br>>>><br><br>These getOperand()-s are private, how it should now be built and work?<br><font color="#888888"><br>-Minas Abrahamyan<br>
</font></blockquote></div><br>