Я много раз ломал Delphi 7, прося его скомпилировать старый код dos.
Основным виновником, похоже, является любая квалификация чего-либо как находящегося в системном блоке. Это не всегда взрывает, но когда это взрывается на таких вещах, я просматриваю и переписываю все, что требует такого переопределения, и проблема исчезает.
Воспроизводимые данные на 100% воспроизводимы, но мне никогда не удавалось сделать простой контрольный пример. На самом деле это не приводит к сбою компилятора большую часть времени, обычно вы получаете сообщение об ошибке, которое не имеет ничего общего с проблемой и может содержать от нее сотни строк. Окружающая среда дестабилизирована, сохранение и выход в порядке, но не думайте больше ничего делать.
Вернувшись в каменный век с Borland Pascal 7 (последняя версия DOS), я много раз ломал его. Никаких сбоев, просто некорректная и непоследовательная эмиссия кода. Я наконец-то научился держать .EXE (не считая отладочную информацию) ниже 3mb. Чем дальше я шел, тем нестабильнее он становился.