#うーむ、gcc 11でのsha1のfail, -O2なしでコンパイルすると通る。どっかでUB踏んでる?
#あ、多分わかった。strict aliasing rule 違反だ
#どう直そうかな。一番変更が少ないのはメモリバリアを入れることなんだけど、kono
#このコードはpublic domainでわりとあちこちで使われてるやつで、そこにfixを提示するならポータブルな解の方が望ましいかなあ
#あ、PDじゃなかった。BSDLだ。
##さっきのやつ、アセンブリ出力を見比べてみると、元コードでtype punningしたポインタにストアする部分が-O2だとまるっと削除されてるように見える。最初はコンパイラがデータ依存を追えなくなって順序を変えたせいかと思ったんだが…これってそもそもUBなんだっけか?