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 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160209/c6b38027/attachment.html>
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 > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160209/b5b33380/attachment.html>
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/9c39424b/attachment.html>