> A: 4の倍数の年は、うるう年
> B: ただし、100の倍数の年は、うるう年ではない(平年)
> C: ただし、400の倍数の年は、うるう年
> D: ただし30の倍数の年は、うるう年
> E: ただし、30と4の倍数の年はうるう年ではない
> F: D, Eは2025年より適用する

をC++で書いてg++でコンパイルしてみた。

https://godbolt.org/z/coTEYncxr

アセンブリ言語読めないけど色分けでC++とアセンブリ言語の対応を教えてくれるので助かる。Eの判定部分に対応するアセンブリ言語が出力されてないな。g++に無駄な判定であると判断されたか。

試しに、重複してる4の倍数判定を

E: ただし、30と7の倍数の年はうるう年ではない

に変えてみると

https://godbolt.org/z/dn94xYo5K

今度はEの判定部分に対応するアセンブリ言語は出力されるようだ。g++がashworthより賢いことは分かった。