Во-первых, и очень важно: для ответа на этот тип вопроса, если ответ имеет значение, вам необходимо получить официальное профессиональное мнение от того, кто компетентен предоставить его, или обсудить это с вашим сертификационным органом. На любой ответ, который вы получите здесь, не следует полагаться.
С учетом вышесказанного, я предполагаю, что вы спрашиваете с любопытства и не будете полагаться на ответ каким-либо значимым образом, и я попытаюсь ответить в том же духе. Я не профессионал, и это не профессиональный совет.
Самой доступной документацией, которую я смог найти в Интернете с помощью быстрого поиска, был этот руководящий документ ФАУ по соответствующей теме: http://www.faa.gov/aircraft/air_cert/design_approvals/air_software/cast/cast_papers/media/cast-12.pdf. В этом документе описываются условия, при которых необходимо скорее выполнить проверку сгенерированного объектного кода чем исходный код. В частности, он дает ряд примеров, которые будут встречаться даже в неоптимизированном коде - автоматическая инициализация переменных и обработка исключений - пара примеров. По оптимизации компилятора он отмечает:
Оптимизация компилятора является еще одной областью, рассматриваемой в разделе 4.4.2a документа DO-178B / ED-12B. Это включает в себя аналитическое определение того, что функции оптимизации не ставят под угрозу способность тестовых случаев демонстрировать основанное на требованиях тестирование и структурное покрытие, соответствующее уровню программного обеспечения. Это отдельная проблема от проблем прослеживаемости и дополнительных проверок, рассмотренных в Разделе 4.4.2b. Это выходит за рамки данной статьи.
У меня нет копии DO-178B, удобной для чтения в разделе 4.4.2a, но я хотел бы отметить, что (a) существуют процедуры для обработки других случаев, когда объектный код не соответствует исходному коду один-на-один, и (б) это довольно сильно подразумевает, что оптимизация компилятора обсуждается, а не прямо запрещена.
Из ряда дискуссий в этой статье также ясно, что ответ на вопрос «мы не можем проследить вещи между исходным кодом и объектным кодом» состоит в том, чтобы каким-то образом проверять объектный код - другими словами есть иное решение, чем запрещение подобных вещей.
Таким образом, я бы пришел к выводу, что по крайней мере некоторые оптимизации компилятора должны быть разрешены.
В частности, вид переупорядочения, который вы описываете, вполне прослеживается, и мне кажется почти уверенным, что это будет разрешено.