のねのBlog

パソコンの問題や、ソフトウェアの開発で起きた問題など書いていきます。よろしくお願いします^^。

skiaをコンパイルしたときのgccでのワーニング

mmm -B ./external/skia 2>&1 | tee make_skia.log

In file included from external/skia/src/images/SkImageDecoder.cpp:9:0:
external/skia/include/core/SkImageDecoder.h: In constructor 'SkImageDecoder::SkImageDecoder()':
external/skia/include/core/SkImageDecoder.h:480:29:
  warning: 'SkImageDecoder::fDitherImage' will be initialized after [-Wreorder]
     bool                    fDitherImage;
                             ^

[-Wreorder]は、初期化の順番についての警告

クラス内メンバ変数の初期化順序には規約がある

external/skia/src/pdf/SkPDFGraphicState.cpp: In member function 'void SkPDFGraphicState::populateDict()':
external/skia/src/pdf/SkPDFGraphicState.cpp:217:46:
 warning: passing 'SkPaint::Cap' chooses 'int32_t {aka int}' over 'size_t {aka unsigned int}' [-Wsign-promo]
         insertInt("LC", fPaint.getStrokeCap());
                                             ^
  • Wsign-promo (C++のみ)

オーバーロード解決に際して、 無符合型もしくは列挙型から有符合型への整数拡張が、 (その有符合型と)同サイズの無符合型への整数拡張よりも優先されて選択される場合に警告を出力します。 以前のバージョンのg++は無符合性を維持するよう試みますが、 C++標準は現在の振る舞いを義務づけています。

external/skia/src/opts/SkBlitMask_opts_arm_neon.cpp: In function 'void SkBlitLCD16OpaqueRow_neon(SkPMColor*, const uint16_t*, SkColor, int, SkPMColor)':
external/skia/src/opts/SkBlitMask_opts_arm_neon.cpp:177:75: warning: 'vcolB' may be used uninitialized in this function [-Wmaybe-uninitialized]
         vdst.val[NEON_B] = SkBlend32_neon8(vcolB, vdst.val[NEON_B], vmaskB);
                                                                           ^

GCC -Wuninitialized / -Wmaybe-uninitialized issues