Currently we warn about all usages of globals, nonlocals, and del. In the general case they interfere with scope checking, but there is a subset of usages that are safe.
We only really need to warn when we need to do extra computation to see if the scope should be modified. Usages at the top-level and in unconditional control flow (like try, with) would be okay, but inside function calls and if statements are bad.