04/03 20:06 いま扱ってるC++コードがどうも動作がおかしくて、デバッガで追ったら「関数の最後で戻らず次の関数に突っ込む」という現象が。逆アセンブルをみたら確かに関数末尾にret命令が生成されていない…そりゃ突っ込むわw
(poga)
04/03 20:06 なんでコンパイラがそんな命令を生成するの…と見たら、「返値が必要な関数なのに関数末尾で『return 返値』がない」コードだった。当然コンパイル時にwarningは出てるのだが、それは「warningでなくerrorでコンパイル停… https://twitter.com/i/web/status/1113397144222715904
(pogi)
04/03 20:06 warningなんか全部潰しとけ…というのはごもっともなのだけど、自分で書いたコードじゃないしな…(苦笑
(pogu)
04/03 20:16 @ksmakoto あと、いわゆるこの「返り値が必要だが返さないパスが発生する関数をエラーにする」というのは、noreturn属性を付けられない環境では困るんですよね…assertして止めちゃう場合とか
(kuhu)
04/03 20:30 ちなみに、過去扱ってきたコンパイラでは「返値を格納するレジスタが不定値のままretする」命令を生成するものだったけど、最近の「未定義と定められたコードにはどんな怪しい結果を吐いてもいいよね」的怪しい動作をするコンパイラの影響だろうか…
(sage)