This is the mail archive of the
mailing list for the GCC project.
Re: Empty loops removal (Was Re: Some extra decorations)
- From: "Peter Dimov" <pdimov at mmltd dot net>
- To: "Jonathan Wakely" <jwakely dot gcc at gmail dot com>, "Joseph S. Myers" <joseph at codesourcery dot com>
- Cc: "Jan Hubicka" <hubicka at ucw dot cz>, "Paolo Carlini" <paolo dot carlini at oracle dot com>, <libstdc++ at gcc dot gnu dot org>, <rguenther at suse dot de>, <gcc at gcc dot gnu dot org>
- Date: Mon, 4 May 2009 02:24:17 +0300
- Subject: Re: Empty loops removal (Was Re: Some extra decorations)
- References: <20090503162856.GA14670@kam.mff.cuni.cz> <49FDCA64.email@example.com> <20090503165810.GD8120@kam.mff.cuni.cz> <D9C8BA04062F4817BF148D6EC986D402@pdimov2> <20090503230618.GA15063@kam.mff.cuni.cz> <Pine.LNX.firstname.lastname@example.org> <email@example.com>
2009/5/4 Joseph S. Myers:
> On Mon, 4 May 2009, Jan Hubicka wrote:
>> On mainline I enabled infinite loop removal at
>> -funsafe-loop-optimizations. I would suggest adding
>> -fempty-loops-terminate and make it default for C++? It does not apply
>> for C, right?
> You mean for C++0x (I see no such rule in C++03), and there is no such
> rule for C at present.
Yes, the rule is new for C++0x, and it is in the context of for, while
and do-while loops only, not recursive calls.
It might be worth raising this issue on c++std-core, because it's easy for a
compiler to transform recursion to a loop using tail call elimination, and I
suspect that it is in line with the original intent to treat recursion with
no side effects as finite in the same way.