いくつかのコードをコンパイルしているときに、-O0と-O1の間で作成されたアセンブラーに大きな違いがあることに気づきました。アセンブラーで特定の変更を引き起こしている原因がわかるまで、最適化の有効化/無効化を実行したかったのです。
-fverbose-asmを使用して、O1がO0と比較して有効にしているフラグを正確に調べ、それらを手動で無効にした場合、生成されるアセンブラーがまだ非常に大きく異なるのはなぜですか?O0でgccを実行し、fverbose-asmがO1で有効になっていると言ったすべてのフラグを手動で追加しても、O1を使用した場合と同じアセンブラーを取得できません。
「-f...」と「-m...」以外に変更できるものはありますか?
または、「O1」は「O0」と比較してオフにできない魔法を持っているということです。
わかりにくいことをお詫びします。これは、GCC + ARMを使用した再帰中のスタック使用量の削減に関連していましたが、その言及により、質問が少し理解しにくくなりました。