libyami icon indicating copy to clipboard operation
libyami copied to clipboard

The build fails with GCC 12 due to the newly added `array-compare` warning.

Open issuefiler opened this issue 2 years ago • 1 comments

The issue

The new warning array-compare, which warns about comparisons between two operands of the array type, was added in GCC 12 (PR97573).

GCC 12 is producing the array-compare warning for

https://github.com/intel/libyami/blob/edd1ad15e383d32c8d67bdc9198c834b6acebca5/codecparsers/h264Parser.h#L99-L101

#define transform_coefficients_for_frame_macroblocks(dest, src, len, mode) \
    {                                                                      \
        if ((dest) != (src)) {                                             \

, resulting in build failure.

My log

$ gcc --version
gcc (Debian 12.2.0-14) 12.2.0
  CXX      libyami_decoder_la-vaapidecoder_h264.lo
In file included from vaapidecoder_h264.h:20,
                 from vaapidecoder_h264.cpp:21:
vaapidecoder_h264.cpp: In function 'void YamiMediaCodec::fillScalingList4x4(VAIQMatrixBufferH264*, std::shared_ptr<YamiParser::H264::PPS>)':
../codecparsers/h264Parser.h:101:20: error: comparison between two arrays [-Werror=array-compare]
  101 |         if ((dest) != (src)) {                                             \
      |             ~~~~~~~^~~~~~~~
vaapidecoder_h264.cpp:1247:13: note: in expansion of macro 'transform_coefficients_for_frame_macroblocks'
 1247 |             transform_coefficients_for_frame_macroblocks(                      \
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vaapidecoder_h264.cpp:1253:1: note: in expansion of macro 'FILL_SCALING_LIST'
 1253 | FILL_SCALING_LIST(4x4, 16)
      | ^~~~~~~~~~~~~~~~~
../codecparsers/h264Parser.h:101:20: note: use unary '+' which decays operands to pointers or '&'component_ref' not supported by dump_decl<declaration error>['view_convert_expr' not supported by dump_decl<declaration error>][0] != &'component_ref' not supported by dump_decl<declaration error>['view_convert_expr' not supported by dump_decl<declaration error>][0]' to compare the addresses
  101 |         if ((dest) != (src)) {                                             \
      |             ~~~~~~~^~~~~~~~
vaapidecoder_h264.cpp:1247:13: note: in expansion of macro 'transform_coefficients_for_frame_macroblocks'
 1247 |             transform_coefficients_for_frame_macroblocks(                      \
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vaapidecoder_h264.cpp:1253:1: note: in expansion of macro 'FILL_SCALING_LIST'
 1253 | FILL_SCALING_LIST(4x4, 16)
      | ^~~~~~~~~~~~~~~~~
vaapidecoder_h264.cpp: In function 'void YamiMediaCodec::fillScalingList8x8(VAIQMatrixBufferH264*, std::shared_ptr<YamiParser::H264::PPS>)':
../codecparsers/h264Parser.h:101:20: error: comparison between two arrays [-Werror=array-compare]
  101 |         if ((dest) != (src)) {                                             \
      |             ~~~~~~~^~~~~~~~
vaapidecoder_h264.cpp:1247:13: note: in expansion of macro 'transform_coefficients_for_frame_macroblocks'
 1247 |             transform_coefficients_for_frame_macroblocks(                      \
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vaapidecoder_h264.cpp:1254:1: note: in expansion of macro 'FILL_SCALING_LIST'
 1254 | FILL_SCALING_LIST(8x8, 64)
      | ^~~~~~~~~~~~~~~~~
../codecparsers/h264Parser.h:101:20: note: use unary '+' which decays operands to pointers or '&'component_ref' not supported by dump_decl<declaration error>['view_convert_expr' not supported by dump_decl<declaration error>][0] != &'component_ref' not supported by dump_decl<declaration error>['view_convert_expr' not supported by dump_decl<declaration error>][0]' to compare the addresses
  101 |         if ((dest) != (src)) {                                             \
      |             ~~~~~~~^~~~~~~~
vaapidecoder_h264.cpp:1247:13: note: in expansion of macro 'transform_coefficients_for_frame_macroblocks'
 1247 |             transform_coefficients_for_frame_macroblocks(                      \
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vaapidecoder_h264.cpp:1254:1: note: in expansion of macro 'FILL_SCALING_LIST'
 1254 | FILL_SCALING_LIST(8x8, 64)
      | ^~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
make[2]: *** [Makefile:753: libyami_decoder_la-vaapidecoder_h264.lo] Error 1

issuefiler avatar Feb 18 '23 10:02 issuefiler