[LLVMdev] could you give me some advice ?

Chris Lattner sabre at nondot.org
Sun Mar 26 14:10:21 PST 2006


On Sat, 25 Mar 2006, lizhuo wrote:
> ; define ConstantArray
> "E1$str" = internal constant [3 x sbyte] c"E1\00"
>
> ; use getPtrPtrFromArrayPtr to define SByte* from ConstantArray
> "E1$entry" = internal constant sbyte* getelementptr ([3 x sbyte]* "E1$str", uint 0, uint 0)
> ...
>
> when i want to get std::string object from this declaration in another program
>
> 	Module* m = loadModule("XXX.bc");
> 	Constant* c =  findValue(m,"E1$entry");
> 	GlobalVariable* gv = cast<GlobalVariable>(c->getOperand(0));
> 	ConstantArray* ca = cast<ConstantArray>(gv->getOperand(0));
> 	std::string str = ca->getAsString();
>
> now str = "E1"
> these code looks a little ugly , could you tell me better solution ?
> In another word , I want to know the reverse operation of ConstantExpr::getPtrPtrFromArrayPtr .

I'm not sure I understand.  You have a pointer to "E1$entry" and you want 
the string it points to?  I assume this is what your findValue 
function does?

-Chris

-- 
http://nondot.org/sabre/
http://llvm.org/




More information about the llvm-dev mailing list