Back branches in code

Back branches create loops. And any module that contains a loop becomes subject to the Halting Problem — to wit, you cannot write a program that can in all cases determine whether the module will exit the loop.

When you're writing software for real-time systems that have hard deadlines, you want to be able to prove that the deadlines are always met. Modules without loops have definite execution times for every path through the code. Modules with loops do not.

There are of course, broad classes of code with loops for which you CAN predict a maximum execution time, so this theoretical constraint is overly restrictive in the context of modern tools.