[llvm-dev] Modified LLVM IR

mats petersson via llvm-dev llvm-dev at lists.llvm.org
Tue Feb 9 23:33:37 PST 2016


So how do you know what you want to modify (conceptually)?

Have you got a IR pass that you are working on, or are you asking for
links/suggestions on how to start on one?

--
Mats

On 10 February 2016 at 04:04, Sandeep Kumar Singh <deepdondo007 at gmail.com>
wrote:

> Hi,
>
> I want to call/add some functions(that defined in another file) on top of
> some functions, and reflect the same changes in object file.
> No, I am not looking for contractor.
>
> Thanks,
> Deepika
>
> On Tue, Feb 9, 2016 at 7:04 PM, mats petersson <mats at planetcatfish.com>
> wrote:
>
>> What is the condition for adding this code?
>>
>> What have you tried so far? [Or are you looking for a contractor that can
>> write code for you - I'm not sure this is quite the right place for that,
>> but there are probably some people like that on this mailing list]
>>
>> --
>> Mats
>>
>> On 9 February 2016 at 09:34, Sandeep Kumar Singh via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>>
>>> Hi,
>>>
>>> I want to edit LLVM generated IR file, like as given below,
>>>
>>> Original LLVM IR file,
>>> @.str2 = private unnamed_addr constant [17 x i8] c"\0AI am in
>>> one_11\0A\00", align 1
>>>
>>> ; Function Attrs: nounwind
>>> define i32 @one_1(i32 %ivar1, i32 %ivar2) #0 {
>>> entry:
>>>   %ivar1.addr = alloca i32, align 4
>>>   %ivar2.addr = alloca i32, align 4
>>>   %isum = alloca i32, align 4
>>>   store i32 %ivar1, i32* %ivar1.addr, align 4
>>>   store i32 %ivar2, i32* %ivar2.addr, align 4
>>>   store i32 0, i32* %isum, align 4
>>>   %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([16 x
>>> i8]* @.str, i32 0, i32 0)) #1
>>>   %0 = load i32* %ivar1.addr, align 4
>>>   %1 = load i32* %ivar2.addr, align 4
>>>   %call1 = call i32 @one_11(i32 %0, i32 %1)
>>>   store i32 %call1, i32* %isum, align 4
>>>   %2 = load i32* %isum, align 4
>>>   ret i32 %2
>>> }
>>>
>>> Modified LLVM IR file,
>>> @.str2 = private unnamed_addr constant [17 x i8] c"\0AI am in
>>> one_11\0A\00", align 1
>>> @.str3 = private unnamed_addr constant [17 x i8] c"\0AI am in
>>> one_12\0A\00", align 1
>>>
>>> ; Function Attrs: nounwind
>>> define i32 @one_1(i32 %ivar1, i32 %ivar2) #0 {
>>> entry:
>>>   %ivar1.addr = alloca i32, align 4
>>>   %ivar2.addr = alloca i32, align 4
>>>   %isum = alloca i32, align 4
>>>   store i32 %ivar1, i32* %ivar1.addr, align 4
>>>   store i32 %ivar2, i32* %ivar2.addr, align 4
>>>   store i32 0, i32* %isum, align 4
>>>   %call1 = call i32 @one_12(i32 %0, i32 %1) <==
>>>   store i32 %call1, i32* %isum, align       <==
>>>   %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([16 x
>>> i8]* @.str, i32 0, i32 0)) #1
>>>   %0 = load i32* %ivar1.addr, align 4
>>>   %1 = load i32* %ivar2.addr, align 4
>>>   %call2 = call i32 @one_11(i32 %0, i32 %1) <==
>>>   store i32 %call2, i32* %isum, align 4     <==
>>>   %2 = load i32* %isum, align 4
>>>   ret i32 %2
>>> }
>>>
>>> With llc tool, I want to generate object file for modified llvm ir file
>>> and it should call function
>>> first "one_12"" and then function "one_11".
>>>
>>> Can someone please tell me how I can do my above requirement.
>>>
>>> Thanks in advance,
>>> Deepika
>>>
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> llvm-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>
>>>
>>
>
>
> --
>
> Thanks and Regards,
> Sandeep Kumar Singh
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160210/cfd2f52d/attachment.html>


More information about the llvm-dev mailing list