Infinite loop (again)

Cecil Ward cecil at cecilward.com
Fri Jun 30 20:36:13 UTC 2023


Some while ago, I posted about the possibility of detecting 
straightforward infinite loops. I thought I that was that. Due to 
my own stupidity I’ve now hit yet another one due to forwarding 
overloaded functions incorrectly. I messed up the argument list, 
basically. This did happen to be because of infinite recursion, 
but it was tail-end optimised to a null-body infinite loop, so no 
stack overflow. So a compiler’s check that is does not involve 
recursion would catch recursive infinite loops and straight loops 
in this case.

Even just the one case, in pseudo-asm:

foo: jmp foo

would be very worthwhile as yet again I wasted too much time 
debugging this idiocy that is happy to run with no warnings. This 
was a loop that after code generation has no body at all.

It would be a really really worthwhile error message given that I 
cannot be the only fool out there. Well, mind you … ;-)

I would beg the compiler writers to implement this error message 
which is straightforward in the back end.

1. Nearer to the front end, recursion with no escape branch is 
obviously not good.
2. Loops that have no escape route branches and whose body is 
either null or which contain no side-effects are also not good
3. I would settle for just straightforward null-body infinite 
loops checked in the back end if that is possible. Never mind 
recursion for the moment.


More information about the Digitalmars-d-learn mailing list