Fixed ``RecursionError`` in ``prange``
======================================

A problem with certain loop patterns using ``prange`` leading to 
``RecursionError`` in the compiler is fixed. An example of such loop is shown 
below. The problem would cause the compiler to fall into an infinite recursive
cycle trying to determine the definition of ``var1`` and ``var2``. The pattern
involves definitions of variables within an if-else tree and not all branches 
are defining the variables.

.. code-block::

    for i in prange(N):
        for j in inner:
            if cond1:
                var1 = ...
            elif cond2:
                var1, var2 = ...

            elif cond3:
                pass

            if cond4:
                use(var1)
                use(var2)

