Hey Duncan,<div><br></div><div>Thanks! I figured out this piece of code finally:</div><div><br></div><div><div>            Value *gep = call->getArgOperand(0);</div><div>            if ( ConstantExpr *pCE = dyn_cast<ConstantExpr>(gep) ) {</div>
<div>              Value *firstop = pCE->getOperand(0);</div><div>              if (GlobalVariable *GV = dyn_cast<GlobalVariable>(firstop)){</div><div>                Constant *v = GV->getInitializer();</div><div>
                if (ConstantArray *CA = dyn_cast<ConstantArray>(v)) {</div><div>                  StringRef portName(CA->getAsString());</div></div><div><br></div><div>That's some learning experience :-)</div>
<div><br></div><div>Regards,</div><div>Welson</div><div><br></div><div><br></div><div><br><div class="gmail_quote">On Sat, Jan 28, 2012 at 6:41 AM, Duncan Sands <span dir="ltr"><<a href="mailto:baldrick@free.fr">baldrick@free.fr</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Welson,<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Yes, it is a ConstantExpr! Thank you!<br>
<br>
Now trying to find a clue in ConstantExpr's functions to get that string :-)<br>
</blockquote>
<br></div>
you can get the pointer operand by doing: getOperand(0)<br>
The i'th index is getOperand(i+1).<br>
<br>
Ciao, Duncan.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
<br>
Regards,<br>
Welson<br>
<br>
On Thu, Jan 26, 2012 at 9:04 PM, Duncan Sands <<a href="mailto:baldrick@free.fr" target="_blank">baldrick@free.fr</a><br></div><div class="im">
<mailto:<a href="mailto:baldrick@free.fr" target="_blank">baldrick@free.fr</a>>> wrote:<br>
<br>
    Hi Welson Sun,<br>
<br>
     > Hi, if I have some LLVM code like this:<br>
     ><br>
     > @.str = private unnamed_addr constant [7 x i8] c"in_arr\00", align 1<br>
     > @.str1 = private unnamed_addr constant [8 x i8] c"in_arr2\00", align 1<br>
     > @.str2 = private unnamed_addr constant [8 x i8] c"out_arr\00", align 1<br>
     > ...<br>
     > ...<br>
     ><br>
     >    call void (...)* @_Z16fooz(i8* *getelementptr inbounds ([7 x i8]*<br>
    @.str, i64<br>
     > 0, i64 0)*, i32 0, i32 1024)<br>
     > ...<br>
     ><br>
     > I would like to get the string value of the bold argument, but how? I<br>
    know it's<br>
     > a llvm::Value pointer, but it is not a llvm::GetElementPtrInst?<br>
<br>
    it is a ConstantExpr getelementptr.  Whenever you see something that looks like<br>
    an instruction but is printed inline inside another instruction then that means<br>
    it is actually a constant, a ConstantExpr.<br>
<br>
    Ciao, Duncan.<br>
<br>
     ><br>
     ><br>
     > Thanks,<br>
     ><br>
     ><br>
     ><br>
     ><br>
     ><br>
     ><br>
     ><br>
     ><br>
     > ______________________________<u></u>_________________<br>
     > LLVM Developers mailing list<br></div>
     > <a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a> <mailto:<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><div class="im">
<br>
     > <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/llvmdev</a><br>
<br>
    ______________________________<u></u>_________________<br>
    LLVM Developers mailing list<br></div>
    <a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a> <mailto:<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><div class="im">
<br>
    <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/llvmdev</a><br>
<br>
<br>
<br>
<br>
--<br>
Welson<br>
<br>
Phone: <a href="tel:%28408%29%20418-8385" value="+14084188385" target="_blank">(408) 418-8385</a><br></div>
Email: <a href="mailto:welson.sun@gmail.com" target="_blank">welson.sun@gmail.com</a> <mailto:<a href="mailto:welson.sun@gmail.com" target="_blank">welson.sun@gmail.com</a>><br>
<br>
<br>
</blockquote>
<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Welson<div><br></div><div>Phone: (408) 418-8385</div><div>Email:  <a href="mailto:welson.sun@gmail.com" target="_blank">welson.sun@gmail.com</a></div><div><br>
</div><br>
</div>