%\pagebreak \section{Restrictions on Nesting of Regions} \label{sec:nesting_restrict} \index{region nesting rules} The examples in this section illustrate the region nesting rules. The following example is non-conforming because the inner and outer loop regions are closely nested: \cexample{nesting_restrict}{1} \fexample{nesting_restrict}{1} The following orphaned version of the preceding example is also non-conforming: \cexample{nesting_restrict}{2} \fexample{nesting_restrict}{2} The following example is non-conforming because the loop and \kcode{single} regions are closely nested: \cexample{nesting_restrict}{3} \pagebreak \fexample{nesting_restrict}{3} The following example is non-conforming because a \kcode{barrier} region cannot be closely nested inside a loop region: \cexample{nesting_restrict}{4} \fexample{nesting_restrict}{4} The following example is non-conforming because the \kcode{barrier} region cannot be closely nested inside the \kcode{critical} region. If this were permitted, it would result in deadlock due to the fact that only one thread at a time can enter the \kcode{critical} region: \cexample{nesting_restrict}{5} \fexample{nesting_restrict}{5} The following example is non-conforming because the \kcode{barrier} region cannot be closely nested inside the \kcode{single} region. If this were permitted, it would result in deadlock due to the fact that only one thread executes the \kcode{single} region: \cexample{nesting_restrict}{6} \fexample{nesting_restrict}{6}