Gauche > Archives > 2021/10/24

2021/10/24 06:38:14 UTCshiro
#
うーむ、gcc 11でのsha1のfail, -O2なしでコンパイルすると通る。どっかでUB踏んでる?
2021/10/24 07:47:02 UTCshiro
#
あ、多分わかった。strict aliasing rule 違反だ
2021/10/24 07:52:15 UTCshiro
#
どう直そうかな。一番変更が少ないのはメモリバリアを入れることなんだけど、kono
#
このコードはpublic domainでわりとあちこちで使われてるやつで、そこにfixを提示するならポータブルな解の方が望ましいかなあ
2021/10/24 08:02:32 UTCshiro
#
あ、PDじゃなかった。BSDLだ。
2021/10/24 09:15:50 UTCshiro
#
なおした https://github.com/shirok/Gauche/commit/9d542ae3b8294b9c22c83eb1de646da504fc11eb
2021/10/24 12:19:55 UTCshiro
#
さっきのやつ、アセンブリ出力を見比べてみると、元コードでtype punningしたポインタにストアする部分が-O2だとまるっと削除されてるように見える。最初はコンパイラがデータ依存を追えなくなって順序を変えたせいかと思ったんだが…これってそもそもUBなんだっけか?