Hi Folks, I noticed that recently in the online code gen demo that generating the unique temporaries have been modified. I don't believe i changed any options. (C++, demangle names, no optimization) *Where:* * * if(x >= y){ } *Previously Compiles to:* %0 = load i32* %x, align 4 %1 = load i32* %y, align 4 %2 = icmp sge i32 %0, %1 br i1 %2, label %bb, label %bb1 bb: ; true goes here *Currently Compiles to:* %tmp = load i32* %x %tmp1 = load i32* %y %cmp = icmp sge i32 %tmp, %tmp1 br i1 %cmp, label %if.then, label %if.end if.then: ; true goes here If this is the case then is there a mailing list or Status update page that reflects this behavior? My question may seem trivial however, im still in llvm exploration mode :) Im working on a compiler that generates LLVM IR and for the moment i dont use the code gen API. I rely on the Assembly manual and demo for reference (Although at some point i will need to use the API in order to take full advantage). Thanks, Jun -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110808/902e02fe/attachment.html>
On Sun, Aug 7, 2011 at 9:01 PM, Jun Mendoza <junmendoza78 at gmail.com> wrote:> Hi Folks, > I noticed that recently in the online code gen demo that generating the > unique temporaries have been modified. > I don't believe i changed any options. (C++, demangle names, no > optimization) > > Where: > if(x >= y){ > } > > Previously Compiles to: > %0 = load i32* %x, align 4 > %1 = load i32* %y, align 4 > %2 = icmp sge i32 %0, %1 > br i1 %2, label %bb, label %bb1 > bb: > ; true goes here > > Currently Compiles to: > > %tmp = load i32* %x > %tmp1 = load i32* %y > %cmp = icmp sge i32 %tmp, %tmp1 > br i1 %cmp, label %if.then, label %if.end > > if.then: > ; true goes here > > If this is the case then is there a mailing list or Status update page that > reflects this behavior? > > My question may seem trivial however, im still in llvm exploration mode :) > > Im working on a compiler that generates LLVM IR and for the moment i dont > use the code gen API. I rely on the Assembly manual and demo for reference > (Although at some point i will need to use the API in order to take full > advantage).Yes, we recently replaced the compiler on the demo page. Both syntax forms have the same meaning; changing the name of anything that is not a global does not affect code generation. Giving the values names tends to be a bit more convenient for compiler developers to read. Most values are named in builds with asserts enabled, but are not named in builds without assertions for performance reasons. I guess the build the demo page is using is a build with assertions enabled at the moment. -Eli
Hi Eli, Ok, I understand the SSA meaning is intact regardless of the representation. Thanks for the interesting clarification on the demo behavior regarding asserts! -Jun On Mon, Aug 8, 2011 at 12:15 PM, Eli Friedman <eli.friedman at gmail.com>wrote:> On Sun, Aug 7, 2011 at 9:01 PM, Jun Mendoza <junmendoza78 at gmail.com> > wrote: > > Hi Folks, > > I noticed that recently in the online code gen demo that generating the > > unique temporaries have been modified. > > I don't believe i changed any options. (C++, demangle names, no > > optimization) > > > > Where: > > if(x >= y){ > > } > > > > Previously Compiles to: > > %0 = load i32* %x, align 4 > > %1 = load i32* %y, align 4 > > %2 = icmp sge i32 %0, %1 > > br i1 %2, label %bb, label %bb1 > > bb: > > ; true goes here > > > > Currently Compiles to: > > > > %tmp = load i32* %x > > %tmp1 = load i32* %y > > %cmp = icmp sge i32 %tmp, %tmp1 > > br i1 %cmp, label %if.then, label %if.end > > > > if.then: > > ; true goes here > > > > If this is the case then is there a mailing list or Status update page > that > > reflects this behavior? > > > > My question may seem trivial however, im still in llvm exploration mode > :) > > > > Im working on a compiler that generates LLVM IR and for the moment i dont > > use the code gen API. I rely on the Assembly manual and demo for > reference > > (Although at some point i will need to use the API in order to take full > > advantage). > > Yes, we recently replaced the compiler on the demo page. Both syntax > forms have the same meaning; changing the name of anything that is not > a global does not affect code generation. Giving the values names > tends to be a bit more convenient for compiler developers to read. > Most values are named in builds with asserts enabled, but are not > named in builds without assertions for performance reasons. I guess > the build the demo page is using is a build with assertions enabled at > the moment. > > -Eli >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110808/a441421b/attachment.html>