So, you mean to say that the above implementation is correct and should work fine. I initially thought that the above way is not the correct way anymore since 3.5.0 might have changed few things. Anyways here is my dirty code I have written for my research project that I took the above snippet from : https://github.com/pranavk/spatial-computing/blob/master/waves.cpp#L105 On Sun, Feb 8, 2015 at 10:25 PM, David Blaikie <dblaikie at gmail.com> wrote:> This may be difficult yo reproduce or debug without a more complete > (though preferably minimal) test case. > On Feb 8, 2015 8:31 AM, "Pranav Kant" <pranav913 at gmail.com> wrote: > >> void Wave::init (const Function &F){ >> Function::const_iterator ie = F.end(); >> outs() << ie << "\n\n"; >> for (Function::const_iterator I = F.begin(), IE = F.end(); I != IE; >> I++, K++){ >> outs() << I << "\n"; >> // some manipulation with I >> } >> } >> >> I used the above shown function in my pass in LLVM 3.4.2 and it used to >> work fine but when I am compiling this pass with 3.5.0, this is a never >> ending loop. Can someone please suggest me what can be wrong here ? >> >> Upon some debugging, I found out that const_iterator I never becomes >> equal to IE, rather it goes past IE when incremented and hence loop never >> ends. >> >> Following is the output upon executing above code. >> >> 0x2e08248 <- address of ie >> 0x2e16630 <- address of I initially >> 0x2e08250 <- incremented I >> 0x2e165e0 >> 0x2e16630 >> 0x2e08250 >> 0x2e165e0 >> 0x2e16630 >> 0x2e08250 >> >> >> >> -- >> Regards, >> Pranav Kant, >> Department of Computer Science >> National Institute of Technology Hamirpur >> http://pricked.in/ >> >> >> >> -- >> Regards, >> Pranav Kant, >> Department of Computer Science >> National Institute of Technology Hamirpur >> http://pricked.in/ >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >>-- Regards, Pranav Kant, Department of Computer Science National Institute of Technology Hamirpur http://pricked.in/ -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150209/19e3b44c/attachment.html>
On Sun, Feb 8, 2015 at 11:23 AM, Pranav Kant <pranav913 at gmail.com> wrote:> So, you mean to say that the above implementation is correct and should > work fine. >So far as I can see - but I could be missing something.> I initially thought that the above way is not the correct way anymore > since 3.5.0 might have changed few things. > > Anyways here is my dirty code I have written for my research project that > I took the above snippet from : > > https://github.com/pranavk/spatial-computing/blob/master/waves.cpp#L105 >Someone (not necessarily me) will presumably need the input/command/arguments/whatever required to trigger the infinite loop in this code that you're seeing, as well as the code there.> > > > On Sun, Feb 8, 2015 at 10:25 PM, David Blaikie <dblaikie at gmail.com> wrote: > >> This may be difficult yo reproduce or debug without a more complete >> (though preferably minimal) test case. >> On Feb 8, 2015 8:31 AM, "Pranav Kant" <pranav913 at gmail.com> wrote: >> >>> void Wave::init (const Function &F){ >>> Function::const_iterator ie = F.end(); >>> outs() << ie << "\n\n"; >>> for (Function::const_iterator I = F.begin(), IE = F.end(); I != IE; >>> I++, K++){ >>> outs() << I << "\n"; >>> // some manipulation with I >>> } >>> } >>> >>> I used the above shown function in my pass in LLVM 3.4.2 and it used to >>> work fine but when I am compiling this pass with 3.5.0, this is a never >>> ending loop. Can someone please suggest me what can be wrong here ? >>> >>> Upon some debugging, I found out that const_iterator I never becomes >>> equal to IE, rather it goes past IE when incremented and hence loop never >>> ends. >>> >>> Following is the output upon executing above code. >>> >>> 0x2e08248 <- address of ie >>> 0x2e16630 <- address of I initially >>> 0x2e08250 <- incremented I >>> 0x2e165e0 >>> 0x2e16630 >>> 0x2e08250 >>> 0x2e165e0 >>> 0x2e16630 >>> 0x2e08250 >>> >>> >>> >>> -- >>> Regards, >>> Pranav Kant, >>> Department of Computer Science >>> National Institute of Technology Hamirpur >>> http://pricked.in/ >>> >>> >>> >>> -- >>> Regards, >>> Pranav Kant, >>> Department of Computer Science >>> National Institute of Technology Hamirpur >>> http://pricked.in/ >>> >>> _______________________________________________ >>> LLVM Developers mailing list >>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>> >>> > > > -- > Regards, > Pranav Kant, > Department of Computer Science > National Institute of Technology Hamirpur > http://pricked.in/ >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150208/4b4a7041/attachment.html>
Input to this pass is the bitcode format of simple code below : int sum_single_loop (int a){ int su = 0, i; for (i=0;i<a;i++) su = su + i; return su; } On Mon, Feb 9, 2015 at 2:32 AM, David Blaikie <dblaikie at gmail.com> wrote:> > > On Sun, Feb 8, 2015 at 11:23 AM, Pranav Kant <pranav913 at gmail.com> wrote: > >> So, you mean to say that the above implementation is correct and should >> work fine. >> > > So far as I can see - but I could be missing something. > > >> I initially thought that the above way is not the correct way anymore >> since 3.5.0 might have changed few things. >> >> Anyways here is my dirty code I have written for my research project that >> I took the above snippet from : >> >> https://github.com/pranavk/spatial-computing/blob/master/waves.cpp#L105 >> > > Someone (not necessarily me) will presumably need the > input/command/arguments/whatever required to trigger the infinite loop in > this code that you're seeing, as well as the code there. > > >> >> >> >> On Sun, Feb 8, 2015 at 10:25 PM, David Blaikie <dblaikie at gmail.com> >> wrote: >> >>> This may be difficult yo reproduce or debug without a more complete >>> (though preferably minimal) test case. >>> On Feb 8, 2015 8:31 AM, "Pranav Kant" <pranav913 at gmail.com> wrote: >>> >>>> void Wave::init (const Function &F){ >>>> Function::const_iterator ie = F.end(); >>>> outs() << ie << "\n\n"; >>>> for (Function::const_iterator I = F.begin(), IE = F.end(); I != IE; >>>> I++, K++){ >>>> outs() << I << "\n"; >>>> // some manipulation with I >>>> } >>>> } >>>> >>>> I used the above shown function in my pass in LLVM 3.4.2 and it used to >>>> work fine but when I am compiling this pass with 3.5.0, this is a never >>>> ending loop. Can someone please suggest me what can be wrong here ? >>>> >>>> Upon some debugging, I found out that const_iterator I never becomes >>>> equal to IE, rather it goes past IE when incremented and hence loop never >>>> ends. >>>> >>>> Following is the output upon executing above code. >>>> >>>> 0x2e08248 <- address of ie >>>> 0x2e16630 <- address of I initially >>>> 0x2e08250 <- incremented I >>>> 0x2e165e0 >>>> 0x2e16630 >>>> 0x2e08250 >>>> 0x2e165e0 >>>> 0x2e16630 >>>> 0x2e08250 >>>> >>>> >>>> >>>> -- >>>> Regards, >>>> Pranav Kant, >>>> Department of Computer Science >>>> National Institute of Technology Hamirpur >>>> http://pricked.in/ >>>> >>>> >>>> >>>> -- >>>> Regards, >>>> Pranav Kant, >>>> Department of Computer Science >>>> National Institute of Technology Hamirpur >>>> http://pricked.in/ >>>> >>>> _______________________________________________ >>>> LLVM Developers mailing list >>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>>> >>>> >> >> >> -- >> Regards, >> Pranav Kant, >> Department of Computer Science >> National Institute of Technology Hamirpur >> http://pricked.in/ >> > >-- Regards, Pranav Kant, Department of Computer Science National Institute of Technology Hamirpur http://pricked.in/ -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150209/0630d1dd/attachment.html>