はhttps://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.htmlから引用:GCCがO2/O3で最適化を有効にするのはなぜですか?
-falign-ラベル
-falign-ラベル= N
整列全ての分岐ターゲットを2のべき乗の境界などのnバイトまでスキップ - falign-functions。 通常のコードフローで 分岐ターゲットに到達したときにダミーオペレーションを挿入する必要があるため、このオプションを使用すると、コードが遅くなります()。
-fno-align-labelsと-falign-labels = 1は同等であり、ラベルが整列していないことを意味します。
-falign-loopsまたは-falign-jumpsが適用され、この値が より大きい場合は、その値が代わりに使用されます。
nが指定されていないかゼロの場合は、マシンに依存するデフォルトの を使用してください。これは、アライメントがないことを意味する '1'となる可能性が非常に高いです。
-O2、-O3レベルで有効になります。もっとこのフラグを考える
は、それがさらに意味を失うことになります...コード・キャッシュ・ミスを誘発の結果、どのようなパラメータが数値とるときにも手段を有効にあります(1 ..)?
「nが指定またはゼロで、何のアライメントを意味しない、 『1』である可能性が非常に高いマシン依存のデフォルトを使用していない場合。」したがって、デフォルトでは、gccはマシン依存の値を使用します。 – Justin
IIRCサイズの最適化です。 – stybl
これは興味深い質問です。投稿していただきありがとうございます。 –