On Mon, Nov 19, 2018 at 4:36 PM Martin Sebor <mse...@gmail.com> wrote: > > On 11/19/2018 03:32 AM, Richard Biener wrote: > > On Sat, Nov 17, 2018 at 12:05 AM Martin Sebor <mse...@gmail.com> wrote: > >> > >> To encourage and simplify the adoption of iterator classes in > >> GCC the attached patch turns the function_args_iterator struct > >> into an (almost) proper C++ iterator class that can be used > >> the same way as traditional forward iterators. > >> > >> The patch also replaces all of the 26 uses of the legacy > >> FOREACH_FUNCTION_ARGS macro with ordinary for loops that use > >> function_args_iterator directly, and also poisons both > >> FOREACH_FUNCTION_ARGS and the unused FOREACH_FUNCTION_ARGS_PTR > >> macros. > >> > >> The few dozen (hundred?) existing uses of for loops that iterate > >> over function parameter types using the TREE_CHAIN() macro can > >> be relatively easily modified to adopt the iterator approach over > >> time. (The patch stops of short of making this change.) > >> > >> Eventually, when GCC moves to more a recent C++ revision, it will > >> become possible to simplify the for loops to make use of the range > >> based for loop syntax along the lines of: > >> > >> for (auto argtype: function_args (functype)) > >> { > >> ... > >> } > >> > >> Tested on x86_64-linux, and (lightly) on powerpc64le-linux using > >> a cross-compiler. I'll test the changes to the other back ends > >> before committing. > > > > This isn't stage3 material. > > In the response referenced below Jeff requested I make use of > iterators in my patch. This simply does what he asked for, > except throughout all of GCC.
I don't think he said you should invent new iterators - we have existing ones. Richard. > > Martin > > > > > Richard. > > > >> > >> Martin > >> > >> PS For some additional background on this change see: > >> https://gcc.gnu.org/ml/gcc-patches/2018-11/msg00493.html >