Кстати, можно пойти другим путем. Например как я уже говорил запретить передавать охраняемый указатель VAR и OUT параметром. Плюс везде запретить передавать глобальные переменные VAR параметром. Т.е. тут вопрос правильной расстановки запретов. Конечно тут доказать правильность посложнее, но если нужна максимальная эффективность, то почему бы и нет.
И я согласен с вами DIzer и vlad, проблема то большей частью в том, у кого откуда руки растут.
Но ради справедливости хочу заметить, что в описании языка семантика WITH должна быть очень точно описана. Тогда разработчика можно ткнуть носом... чегой мол твоя реализация прописанную семантику не обеспечивает.
p.s. Если философски на все это посмотреть, то проблемы WITH отражают проблемы языка WIRTH'а вообще