on 2021/7/19 下午10:08, Jonathan Wakely wrote: > On Mon, 19 Jul 2021 at 07:20, Kewen.Lin <li...@linux.ibm.com> wrote: >> >> Hi, >> >> This patch follows Martin's suggestion here[1], to support >> range-based for loops for traversing loops, analogously to >> the patch for vec[2]. >> >> Bootstrapped and regtested on powerpc64le-linux-gnu P9, >> x86_64-redhat-linux and aarch64-linux-gnu, also >> bootstrapped on ppc64le P9 with bootstrap-O3 config. >> >> Any comments are appreciated. > > In the loops_list::iterator type, this looks a little strange: > > + bool > + operator!= (const iterator &rhs) const > + { > + return this->curr_idx < rhs.curr_idx; > + } > + > > This works fine when the iterator type is used implicitly in a > range-based for loop, but it wouldn't work for explicit uses of the > iterator type where somebody does the != comparison with the > past-the-end iterator on on the LHS: > > auto&& list ALL_LOOPS(foo); > auto end = list.end(); > auto begin = list.begin(); > while (--end != begin) >
Thanks for the comments, Jonathan. Yeah, to use "!=" is better for clear meaning and later extension. It was under the assumption that the index can only increase (only supports operator++()), so I simply used "<". Will fix it in V2. BR, Kewen