10.6. ОПТИМИЗАЦИЯ ПРОГРАММЫ

Компиляторы могут осуществлять оптимизацию предвыполнения описаний и выполнения операторов. В частности, компилятор может оптимизировать программу, вычисляя определенные выражения помимо статических. Если какое-либо из таких выражений, статических или нет, при вычислении приводит к возбуждению исключения, то код этой части программы может быть заменен кодом возбуждения того же исключения; это справедливо для исключений, возбуждаемых при вычислении имен и простых выражений (см. также разд. 11.6).

Компилятор может определить, что некоторые операторы или подпрограммы никогда не будут выполняться, например, если их выполнение зависит от условия, имеющего значение FALSE. В таком случае соответствующие части объектного машинного кода могут быть опущены. Такое правило позволяет на уровне языка производить условную компиляцию.

Примечание. Выражение, вычисление которого может привести к возбуждению исключения, не обязательно представляет ошибку, если выражение находится в операторе или подпрограмме, которые никогда не выполняются. Компилятор может предупреждать программиста о потенциальной ошибке.

Ссылки: возбуждение исключения 11.1, выражение 4.7, вычисление 4.5, исключение 11, логическое значение FALSE 3.5.3, оператор 5, описание 3.1, подпрограмма 6, предвыполнение 3.9, программа 10, статическое выражение 4.9, условие 5.3.