gcc-4.9 の変更では、次のように書かれています。
UndefinedBehaviorSanitizer (ubsan)、高速な未定義動作検出器が追加され、-fsanitize=undefined で有効にできます。実行時に未定義の動作を検出するために、さまざまな計算がインストルメント化されます。UndefinedBehaviorSanitizer は現在、C および C++ 言語で使用できます。
この質問 (未定義の動作を検出する C++ 実装? ) を見ましたが、かなり時代遅れのようです。
このリンク ( http://gcc.gnu.org/ml/gcc-patches/2013-06/msg00264.html ) にはいくつかの情報がありますが、数か月前のものです。
これは、Undefined Behavior Sanitizer を GCC に追加する試みです。非常にアルファ版であることに注意してください。これまでのところ、それほど多くはありませんが、現時点では、ゼロのケースによる除算、INT_MIN / -1、およびさまざまなシフトのケース (負の値によるシフト、2 番目のオペランドが TYPE_PRECISION (first_operand) よりも >= の場合のシフト) を処理する必要があります。 (これまでのところ、整数型について)
私が読んだことgcc
から、 fromに移植されていLLVM
ます。
私はそれを試してみましたが(5 / 0)
、唯一の違いは次の出力のようです:
main.cpp:5:19: runtime error: division by zero
誰かがそれについてもっと情報を持っていますか、またはそれが持つ機能は何ですか?