If a `func.func` is nested in some other operation, the barrier eliminator's recursion into parents will examine the neighbors of each function. Therefore, don't recurse into the parent of an operation if that operation is IsolatedFromAbove, like a func.func is. Furthermore, define functions as a region that executes only once, since, within the context of this pass (which runs on functions) it is true.