[LLVMdev] For a small help

Jeff Cohen jeffc at jolt-lang.org
Wed Apr 4 11:10:11 PDT 2007


Ferad Zyulkyarov wrote:
> Hi,
>
> I want to ask for a small help for creating an instruction that calls
> e member method of an object. I suppose that this is not a headache
> but I am impatient in learning :) I would be very thankful if you can
> show me an example snippet code that does this in LLVM. Below is
> described my case.
>
> Let's say I have a class TestClass
>
> class TestClass
> {
>     int testMethod(int a);
> }
>
> and I want to create a call instruction that calls
> obj.testMethod(input) where obj is an instance of TestClass
>
> TestClass obj; // I have this declared prior
> int input = 1; // I have declared prior
> int output; // I have this declared prior too
> output = obj.testObject(input); // I want to create this instruction
>
> Thanks,
> Ferad
>   

You can use the LLVM demo page ( http://llvm.org/demo/index.cgi ) to 
find out what LLVM code is generated for some C++ code.  For example, 
the above produces:

; ModuleID = '/tmp/webcompile/_6207_0.bc'
target datalayout = "e-p:32:32"
target endian = little
target pointersize = 32
target triple = "i686-pc-linux-gnu"
	%struct.TestClass = type { ubyte }

implementation   ; Functions:

void %_Z4funcv() {
entry:
	%obj = alloca %struct.TestClass, align 1		; <%struct.TestClass*> [#uses=1]
	%tmp1 = call int %_ZN9TestClass10testMethodEi( %struct.TestClass* %obj, int 1 )		; <int> [#uses=0]
	ret void
}

declare int %_ZN9TestClass10testMethodEi(%struct.TestClass*, int)

The object on which you call the method becomes the first argument to 
the method.




More information about the llvm-dev mailing list