К сожалению, эта фича в реальной жизни привела к тому, что у нас, независимо от того, используем или нет эти вложенные функции, исполняемый стек. Причина в том, что эти функции хранятся в стеке, и должны быть вызываемыми, стек надо сделать исполняемым, если есть такие функции в исходном коде. Системы opt-in, чтобы компилятор аннотировал модули, для которых стек должен быть исполняемым, придумано поначалу не было, поэтому пришлось разрешить исполнение по умолчанию, и ввели аннотации по принципу opt-out. Потом, конечно, ввели и opt-in аннотации. Но до сих пор встречаются модули без аннотаций, которе, если попадают в результат при сборке, заставляют делать стек исполняемым, поскольку неясно, есть ли такие функции в модуле.
Вот тут подробно написано: http://www.airs.com/blog/archives/518
no subject
Вот тут подробно написано: http://www.airs.com/blog/archives/518