[x265] Several compiler warnings in MSYS2/MinGW64 with GCC 8.2.0

Mario *LigH* Rohkrämer contact at ligh.de
Wed Aug 8 12:39:58 CEST 2018


MSYS2 recently updated MinGW64 with GCC 8.2.0 (MinGW32 will keep GCC 
7.3.0 due to some internal compiler errors in v8.2.0).

Here are some of the reported warnings (the compilation still passes):

+----
[ 80%] Building CXX object encoder/CMakeFiles/encoder.dir/encoder.cpp.obj
In file included from 
H:/development/media-autobuild_suite-master/build/x265-hg/source/encoder/encoder.cpp:36:
H:/development/media-autobuild_suite-master/build/x265-hg/source/encoder/frameencoder.h: 
In member function 'void x265::CTURow::init(x265::Entropy&, unsigned int)':
H:/development/media-autobuild_suite-master/build/x265-hg/source/encoder/frameencoder.h:108:46: 
warning: 'void* memset(void*, int, size_t)' clearing an object of 
non-trivial type 'struct x265::FrameStats'; use assignment or 
value-initialization instead [-Wclass-memaccess]
          memset(&rowStats, 0, sizeof(rowStats));
                                               ^
In file included from 
H:/development/media-autobuild_suite-master/build/x265-hg/source/encoder/encoder.cpp:30:
H:/development/media-autobuild_suite-master/build/x265-hg/source/common/framedata.h:41:8: 
note: 'struct x265::FrameStats' declared here
  struct FrameStats
         ^~~~~~~~~~
H:/development/media-autobuild_suite-master/build/x265-hg/source/encoder/encoder.cpp: 
In member function 'void 
x265::Encoder::readAnalysisFile(x265_analysis_data*, int, const 
x265_picture*, int)':
H:/development/media-autobuild_suite-master/build/x265-hg/source/encoder/encoder.cpp:3190:43: 
warning: 'void* memcpy(void*, const void*, size_t)' copying an object of 
non-trivial type 'struct x265::MV' from an array of 'x265_analysis_MV' 
{aka 'struct x265_analysis_MV'} [-Wclass-memaccess]
          memcpy(val, src, (size * readSize));\
                                            ^
H:/development/media-autobuild_suite-master/build/x265-hg/source/encoder/encoder.cpp:3382:21: 
note: in expansion of macro 'X265_FREAD'
                      X265_FREAD(mv[i], sizeof(MV), depthBytes, 
m_analysisFileIn, interPic->mv[i]);
                      ^~~~~~~~~~
In file included from 
H:/development/media-autobuild_suite-master/build/x265-hg/source/common/lowres.h:30,
                  from 
H:/development/media-autobuild_suite-master/build/x265-hg/source/common/frame.h:29,
                  from 
H:/development/media-autobuild_suite-master/build/x265-hg/source/encoder/encoder.cpp:29:
H:/development/media-autobuild_suite-master/build/x265-hg/source/common/mv.h:37:8: 
note: 'struct x265::MV' declared here
  struct MV
         ^~
H:/development/media-autobuild_suite-master/build/x265-hg/source/encoder/encoder.cpp: 
In member function 'void 
x265::Encoder::readAnalysisFile(x265_analysis_data*, int, const 
x265_picture*, int, x265::cuLocation)':
H:/development/media-autobuild_suite-master/build/x265-hg/source/encoder/encoder.cpp:3468:43: 
warning: 'void* memcpy(void*, const void*, size_t)' copying an object of 
non-trivial type 'struct x265::MV' from an array of 'x265_analysis_MV' 
{aka 'struct x265_analysis_MV'} [-Wclass-memaccess]
          memcpy(val, src, (size * readSize));\
                                            ^
H:/development/media-autobuild_suite-master/build/x265-hg/source/encoder/encoder.cpp:3707:21: 
note: in expansion of macro 'X265_FREAD'
                      X265_FREAD(mv[i], sizeof(MV), depthBytes, 
m_analysisFileIn, interPic->mv[i]);
                      ^~~~~~~~~~
In file included from 
H:/development/media-autobuild_suite-master/build/x265-hg/source/common/lowres.h:30,
                  from 
H:/development/media-autobuild_suite-master/build/x265-hg/source/common/frame.h:29,
                  from 
H:/development/media-autobuild_suite-master/build/x265-hg/source/encoder/encoder.cpp:29:
H:/development/media-autobuild_suite-master/build/x265-hg/source/common/mv.h:37:8: 
note: 'struct x265::MV' declared here
  struct MV
         ^~
H:/development/media-autobuild_suite-master/build/x265-hg/source/encoder/encoder.cpp: 
In member function 'bool x265::Encoder::computeSPSRPSIndex()':
H:/development/media-autobuild_suite-master/build/x265-hg/source/encoder/encoder.cpp:4583:61: 
warning: 'void* memset(void*, int, size_t)' clearing an object of 
non-trivial type 'struct x265::RPS'; use assignment or 
value-initialization instead [-Wclass-memaccess]
      memset(rpsInSPS, 0, sizeof(RPS) * MAX_NUM_SHORT_TERM_RPS);
                                                              ^
In file included from 
H:/development/media-autobuild_suite-master/build/x265-hg/source/common/framedata.h:28,
                  from 
H:/development/media-autobuild_suite-master/build/x265-hg/source/encoder/encoder.cpp:30:
H:/development/media-autobuild_suite-master/build/x265-hg/source/common/slice.h:45:8: 
note: 'struct x265::RPS' declared here
  struct RPS
         ^~~
[ 81%] Building CXX object encoder/CMakeFiles/encoder.dir/api.cpp.obj
H:/development/media-autobuild_suite-master/build/x265-hg/source/encoder/api.cpp: 
In function 'const x265_api* x265_api_get_164(int)':
H:/development/media-autobuild_suite-master/build/x265-hg/source/encoder/api.cpp:723:70: 
warning: cast between incompatible function types from 'FARPROC' {aka 
'long long int (*)()'} to 'api_get_func' {aka 'const x265_api* 
(*)(int)'} [-Wcast-function-type]
              api_get_func get = (api_get_func)GetProcAddress(h, method);
                                                                       ^
H:/development/media-autobuild_suite-master/build/x265-hg/source/encoder/api.cpp: 
In function 'const x265_api* x265_api_query(int, int, int*)':
H:/development/media-autobuild_suite-master/build/x265-hg/source/encoder/api.cpp:817:76: 
warning: cast between incompatible function types from 'FARPROC' {aka 
'long long int (*)()'} to 'api_query_func' {aka 'const x265_api* 
(*)(int, int, int*)'} [-Wcast-function-type]
              api_query_func query = (api_query_func)GetProcAddress(h, 
method);
 
     ^
+----

I guess they may be related to different defaults of warnings being 
enabled, so you may have to disable a few more explicitly.


More information about the x265-devel mailing list