- 自作のビットセットクラスがGCCのO2ビルドで範囲外アクセス警告を出す、という不思議な現象に遭遇した
- テンプレートで個数を受け取る実装をしている
-Warray-boundsが「部分的に範囲外アクセスしそう」と警告してくる- 256ビット分の配列しかないはずなのに、1024ビット辺りにアクセスしていると言ってくる
- プログラムの流れを追って見た感じでは問題なさそう
- ビット数で上限が決まっているので、そもそもそんなに大きく逸脱しないはず
- 原因はテンプレートを使うと、直前のインスタンス化の状況に引っ張られるバグでした
- 確かに、1024ビットと256ビットのビットセットを定義していた
- 似たようなバグがすでに報告されていた:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105438
GCCのバグ:偽陽性の-Warray-bounds
·
Updated:
Share this post on: