Opened 10 years ago

Closed 10 years ago

#2359 closed defect (fixed)

GCC Compile Warnings

Reported by: Josh Owned by: wraitii
Priority: Nice to Have Milestone: Alpha 16
Component: Build & Packages Keywords:
Cc: wraitii Patch:

Description

I'm getting the following compiler warnings:

MapReader.cpp
ICmpIdentity.cpp
SoundManager.cpp
../../../source/graphics/MapReader.cpp: In member function ‘void CXMLReader::ReadEnvironment(XMBElement)’:
../../../source/graphics/MapReader.cpp:721:12: warning: variable ‘this_avoids_a_warning_about_unused_variables’ set but not used [-Wunused-but-set-variable]
      float this_avoids_a_warning_about_unused_variables = 0;
            ^
ICmpParticleManager.cpp
CommandHandlers.cpp
CCmpWaterManager.cpp
...
WaterManager.cpp
CGUIScrollBarVertical.cpp
../../../source/renderer/WaterManager.cpp: In member function ‘void WaterManager::CreateSuperfancyInfo(CSimulation2*)’:
../../../source/renderer/WaterManager.cpp:369:64: warning: narrowing conversion of ‘-((WaterManager*)this)->WaterManager::m_MapSize’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
      -2-2*m_MapSize,2+2*m_MapSize,-2+2*m_MapSize,2-2*m_MapSize };
                                                                ^
../../../source/renderer/WaterManager.cpp:369:64: warning: narrowing conversion of ‘((WaterManager*)this)->WaterManager::m_MapSize’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
../../../source/renderer/WaterManager.cpp:366:54: warning: narrowing conversion of ‘~((WaterManager*)this)->WaterManager::m_MapSize’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
     int offset[24] = { -1,1,-m_MapSize,+m_MapSize, -1-m_MapSize,+1-m_MapSize,-1+m_MapSize,1+m_MapSize,
                                                      ^
../../../source/renderer/WaterManager.cpp:366:67: warning: narrowing conversion of ‘(1ul - ((WaterManager*)this)->WaterManager::m_MapSize)’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
     int offset[24] = { -1,1,-m_MapSize,+m_MapSize, -1-m_MapSize,+1-m_MapSize,-1+m_MapSize,1+m_MapSize,
                                                                   ^
../../../source/renderer/WaterManager.cpp:366:80: warning: narrowing conversion of ‘(((WaterManager*)this)->WaterManager::m_MapSize + 18446744073709551615ul)’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
     int offset[24] = { -1,1,-m_MapSize,+m_MapSize, -1-m_MapSize,+1-m_MapSize,-1+m_MapSize,1+m_MapSize,
                                                                                ^
../../../source/renderer/WaterManager.cpp:366:92: warning: narrowing conversion of ‘(((WaterManager*)this)->WaterManager::m_MapSize + 1ul)’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
     int offset[24] = { -1,1,-m_MapSize,+m_MapSize, -1-m_MapSize,+1-m_MapSize,-1+m_MapSize,1+m_MapSize,
                                                                                            ^
../../../source/renderer/WaterManager.cpp:367:13: warning: narrowing conversion of ‘(((WaterManager*)this)->WaterManager::m_MapSize * 18446744073709551614ul)’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
      -2,2,-2*m_MapSize,2*m_MapSize,-2-m_MapSize,-2+m_MapSize,2-m_MapSize,2+m_MapSize,
             ^
../../../source/renderer/WaterManager.cpp:367:25: warning: narrowing conversion of ‘(((WaterManager*)this)->WaterManager::m_MapSize * 2ul)’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
      -2,2,-2*m_MapSize,2*m_MapSize,-2-m_MapSize,-2+m_MapSize,2-m_MapSize,2+m_MapSize,
                         ^
../../../source/renderer/WaterManager.cpp:367:38: warning: narrowing conversion of ‘(18446744073709551614ul - ((WaterManager*)this)->WaterManager::m_MapSize)’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
      -2,2,-2*m_MapSize,2*m_MapSize,-2-m_MapSize,-2+m_MapSize,2-m_MapSize,2+m_MapSize,
                                      ^
../../../source/renderer/WaterManager.cpp:367:51: warning: narrowing conversion of ‘(((WaterManager*)this)->WaterManager::m_MapSize + 18446744073709551614ul)’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
      -2,2,-2*m_MapSize,2*m_MapSize,-2-m_MapSize,-2+m_MapSize,2-m_MapSize,2+m_MapSize,
                                                   ^
../../../source/renderer/WaterManager.cpp:367:63: warning: narrowing conversion of ‘(2ul - ((WaterManager*)this)->WaterManager::m_MapSize)’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
      -2,2,-2*m_MapSize,2*m_MapSize,-2-m_MapSize,-2+m_MapSize,2-m_MapSize,2+m_MapSize,
                                                               ^
../../../source/renderer/WaterManager.cpp:367:75: warning: narrowing conversion of ‘(((WaterManager*)this)->WaterManager::m_MapSize + 2ul)’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
      -2,2,-2*m_MapSize,2*m_MapSize,-2-m_MapSize,-2+m_MapSize,2-m_MapSize,2+m_MapSize,
                                                                           ^
../../../source/renderer/WaterManager.cpp:368:8: warning: narrowing conversion of ‘~(((WaterManager*)this)->WaterManager::m_MapSize * 2ul)’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
      -1-2*m_MapSize,+1-2*m_MapSize,-1+2*m_MapSize,1+2*m_MapSize,
        ^
../../../source/renderer/WaterManager.cpp:368:23: warning: narrowing conversion of ‘(1ul - (((WaterManager*)this)->WaterManager::m_MapSize * 2ul))’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
      -1-2*m_MapSize,+1-2*m_MapSize,-1+2*m_MapSize,1+2*m_MapSize,
                       ^
../../../source/renderer/WaterManager.cpp:368:38: warning: narrowing conversion of ‘((((WaterManager*)this)->WaterManager::m_MapSize * 2ul) + 18446744073709551615ul)’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
      -1-2*m_MapSize,+1-2*m_MapSize,-1+2*m_MapSize,1+2*m_MapSize,
                                      ^
../../../source/renderer/WaterManager.cpp:368:52: warning: narrowing conversion of ‘((((WaterManager*)this)->WaterManager::m_MapSize * 2ul) + 1ul)’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
      -1-2*m_MapSize,+1-2*m_MapSize,-1+2*m_MapSize,1+2*m_MapSize,
                                                    ^
../../../source/renderer/WaterManager.cpp:369:8: warning: narrowing conversion of ‘(18446744073709551614ul - (((WaterManager*)this)->WaterManager::m_MapSize * 2ul))’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
      -2-2*m_MapSize,2+2*m_MapSize,-2+2*m_MapSize,2-2*m_MapSize };
        ^
../../../source/renderer/WaterManager.cpp:369:22: warning: narrowing conversion of ‘((((WaterManager*)this)->WaterManager::m_MapSize + 1ul) * 2ul)’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
      -2-2*m_MapSize,2+2*m_MapSize,-2+2*m_MapSize,2-2*m_MapSize };
                      ^
../../../source/renderer/WaterManager.cpp:369:37: warning: narrowing conversion of ‘((((WaterManager*)this)->WaterManager::m_MapSize * 2ul) + 18446744073709551614ul)’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
      -2-2*m_MapSize,2+2*m_MapSize,-2+2*m_MapSize,2-2*m_MapSize };
                                     ^
../../../source/renderer/WaterManager.cpp:369:51: warning: narrowing conversion of ‘((((WaterManager*)this)->WaterManager::m_MapSize * 18446744073709551614ul) + 2ul)’ from ‘size_t {aka long unsigned int}’ to ‘int’ inside { } [-Wnarrowing]
      -2-2*m_MapSize,2+2*m_MapSize,-2+2*m_MapSize,2-2*m_MapSize };
                                                   ^
TerrainRenderer.cpp
JSInterface_GUITypes.cpp
RenderModifiers.cpp
...

I think this is related to r14514. I'm using GCC 4.8 on Ubuntu 13.10 x86_64.

Change History (11)

comment:1 by wraitii, 10 years ago

Owner: set to wraitii
Resolution: fixed
Status: newclosed

In 14529:

Change a few things to avoid warnings with gcc. Should fix #2359

comment:2 by wraitii, 10 years ago

Clang didn't give me those warnings (might be a setting issue with Xcode) but they should be fixed now, please report if otherwise.

comment:3 by Josh, 10 years ago

That seems to fix most everything. I am still getting a minor warning though.

...
MapReader.cpp
WaterManager.cpp
../../../source/renderer/WaterManager.cpp: In member function ‘void WaterManager::CreateSuperfancyInfo(CSimulation2*)’:
../../../source/renderer/WaterManager.cpp:369:64: warning: narrowing conversion of ‘-1’ from ‘int’ to ‘size_t {aka long unsigned int}’ inside { } [-Wnarrowing]
      -2-2*m_MapSize,2+2*m_MapSize,-2+2*m_MapSize,2-2*m_MapSize };
                                                                ^
../../../source/renderer/WaterManager.cpp:369:64: warning: narrowing conversion of ‘-2’ from ‘int’ to ‘size_t {aka long unsigned int}’ inside { } [-Wnarrowing]
Linking graphics
...

comment:4 by historic_bruno, 10 years ago

Resolution: fixed
Status: closedreopened

I'm not sure those warnings are minor, I get similar ones in MSVC:

1>  WaterManager.cpp
1>..\..\..\source\renderer\WaterManager.cpp(366): warning C4245: 'initializing' : conversion from 'int' to 'size_t', signed/unsigned mismatch
1>..\..\..\source\renderer\WaterManager.cpp(366): warning C4146: unary minus operator applied to unsigned type, result still unsigned
1>..\..\..\source\renderer\WaterManager.cpp(367): warning C4245: 'initializing' : conversion from 'int' to 'size_t', signed/unsigned mismatch

Is it intended to convert a signed integer to an unsigned caused it to wrap around?

comment:5 by wraitii, 10 years ago

Does [14539] fix those? I used size_t by mistake, it's definitely signed.

comment:6 by historic_bruno, 10 years ago

That fixes two of the warnings, but this one remains:

1>..\..\..\source\renderer\WaterManager.cpp(366): warning C4146: unary minus operator applied to unsigned type, result still unsigned

comment:7 by Josh, 10 years ago

Here's what GCC's giving me now:

joshua@Ubuntu-PC:~/0ad/build/workspaces/gcc$ make -j5
==== Building lobby (release) ====
==== Building mocks_real (release) ====
==== Building network (release) ====
==== Building glooxwrapper (release) ====
==== Building simulation2 (release) ====
==== Building scriptinterface (release) ====
==== Building engine (release) ====
==== Building graphics (release) ====
==== Building atlas (release) ====
==== Building gui (release) ====
VideoMode.cpp
WaterManager.cpp
==== Building lowlevel (release) ====
==== Building mongoose (release) ====
==== Building mocks_test (release) ====
==== Building Collada (release) ====
Linking engine
../../../source/renderer/WaterManager.cpp: In member function ‘void WaterManager::CreateSuperfancyInfo(CSimulation2*)’:
../../../source/renderer/WaterManager.cpp:369:64: warning: narrowing conversion of ‘-((WaterManager*)this)->WaterManager::m_MapSize’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
      -2-2*m_MapSize,2+2*m_MapSize,-2+2*m_MapSize,2-2*m_MapSize };
                                                                ^
../../../source/renderer/WaterManager.cpp:369:64: warning: narrowing conversion of ‘((WaterManager*)this)->WaterManager::m_MapSize’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
../../../source/renderer/WaterManager.cpp:366:58: warning: narrowing conversion of ‘~((WaterManager*)this)->WaterManager::m_MapSize’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
     ssize_t offset[24] = { -1,1,-m_MapSize,+m_MapSize, -1-m_MapSize,+1-m_MapSize,-1+m_MapSize,1+m_MapSize,
                                                          ^
../../../source/renderer/WaterManager.cpp:366:71: warning: narrowing conversion of ‘(1ul - ((WaterManager*)this)->WaterManager::m_MapSize)’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
     ssize_t offset[24] = { -1,1,-m_MapSize,+m_MapSize, -1-m_MapSize,+1-m_MapSize,-1+m_MapSize,1+m_MapSize,
                                                                       ^
../../../source/renderer/WaterManager.cpp:366:84: warning: narrowing conversion of ‘(((WaterManager*)this)->WaterManager::m_MapSize + 18446744073709551615ul)’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
     ssize_t offset[24] = { -1,1,-m_MapSize,+m_MapSize, -1-m_MapSize,+1-m_MapSize,-1+m_MapSize,1+m_MapSize,
                                                                                    ^
../../../source/renderer/WaterManager.cpp:366:96: warning: narrowing conversion of ‘(((WaterManager*)this)->WaterManager::m_MapSize + 1ul)’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
     ssize_t offset[24] = { -1,1,-m_MapSize,+m_MapSize, -1-m_MapSize,+1-m_MapSize,-1+m_MapSize,1+m_MapSize,
                                                                                                ^
../../../source/renderer/WaterManager.cpp:367:13: warning: narrowing conversion of ‘(((WaterManager*)this)->WaterManager::m_MapSize * 18446744073709551614ul)’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
      -2,2,-2*m_MapSize,2*m_MapSize,-2-m_MapSize,-2+m_MapSize,2-m_MapSize,2+m_MapSize,
             ^
../../../source/renderer/WaterManager.cpp:367:25: warning: narrowing conversion of ‘(((WaterManager*)this)->WaterManager::m_MapSize * 2ul)’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
      -2,2,-2*m_MapSize,2*m_MapSize,-2-m_MapSize,-2+m_MapSize,2-m_MapSize,2+m_MapSize,
                         ^
../../../source/renderer/WaterManager.cpp:367:38: warning: narrowing conversion of ‘(18446744073709551614ul - ((WaterManager*)this)->WaterManager::m_MapSize)’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
      -2,2,-2*m_MapSize,2*m_MapSize,-2-m_MapSize,-2+m_MapSize,2-m_MapSize,2+m_MapSize,
                                      ^
../../../source/renderer/WaterManager.cpp:367:51: warning: narrowing conversion of ‘(((WaterManager*)this)->WaterManager::m_MapSize + 18446744073709551614ul)’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
      -2,2,-2*m_MapSize,2*m_MapSize,-2-m_MapSize,-2+m_MapSize,2-m_MapSize,2+m_MapSize,
                                                   ^
../../../source/renderer/WaterManager.cpp:367:63: warning: narrowing conversion of ‘(2ul - ((WaterManager*)this)->WaterManager::m_MapSize)’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
      -2,2,-2*m_MapSize,2*m_MapSize,-2-m_MapSize,-2+m_MapSize,2-m_MapSize,2+m_MapSize,
                                                               ^
../../../source/renderer/WaterManager.cpp:367:75: warning: narrowing conversion of ‘(((WaterManager*)this)->WaterManager::m_MapSize + 2ul)’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
      -2,2,-2*m_MapSize,2*m_MapSize,-2-m_MapSize,-2+m_MapSize,2-m_MapSize,2+m_MapSize,
                                                                           ^
../../../source/renderer/WaterManager.cpp:368:8: warning: narrowing conversion of ‘~(((WaterManager*)this)->WaterManager::m_MapSize * 2ul)’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
      -1-2*m_MapSize,+1-2*m_MapSize,-1+2*m_MapSize,1+2*m_MapSize,
        ^
../../../source/renderer/WaterManager.cpp:368:23: warning: narrowing conversion of ‘(1ul - (((WaterManager*)this)->WaterManager::m_MapSize * 2ul))’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
      -1-2*m_MapSize,+1-2*m_MapSize,-1+2*m_MapSize,1+2*m_MapSize,
                       ^
../../../source/renderer/WaterManager.cpp:368:38: warning: narrowing conversion of ‘((((WaterManager*)this)->WaterManager::m_MapSize * 2ul) + 18446744073709551615ul)’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
      -1-2*m_MapSize,+1-2*m_MapSize,-1+2*m_MapSize,1+2*m_MapSize,
                                      ^
../../../source/renderer/WaterManager.cpp:368:52: warning: narrowing conversion of ‘((((WaterManager*)this)->WaterManager::m_MapSize * 2ul) + 1ul)’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
      -1-2*m_MapSize,+1-2*m_MapSize,-1+2*m_MapSize,1+2*m_MapSize,
                                                    ^
../../../source/renderer/WaterManager.cpp:369:8: warning: narrowing conversion of ‘(18446744073709551614ul - (((WaterManager*)this)->WaterManager::m_MapSize * 2ul))’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
      -2-2*m_MapSize,2+2*m_MapSize,-2+2*m_MapSize,2-2*m_MapSize };
        ^
../../../source/renderer/WaterManager.cpp:369:22: warning: narrowing conversion of ‘((((WaterManager*)this)->WaterManager::m_MapSize + 1ul) * 2ul)’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
      -2-2*m_MapSize,2+2*m_MapSize,-2+2*m_MapSize,2-2*m_MapSize };
                      ^
../../../source/renderer/WaterManager.cpp:369:37: warning: narrowing conversion of ‘((((WaterManager*)this)->WaterManager::m_MapSize * 2ul) + 18446744073709551614ul)’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
      -2-2*m_MapSize,2+2*m_MapSize,-2+2*m_MapSize,2-2*m_MapSize };
                                     ^
../../../source/renderer/WaterManager.cpp:369:51: warning: narrowing conversion of ‘((((WaterManager*)this)->WaterManager::m_MapSize * 18446744073709551614ul) + 2ul)’ from ‘size_t {aka long unsigned int}’ to ‘ssize_t {aka long int}’ inside { } [-Wnarrowing]
      -2-2*m_MapSize,2+2*m_MapSize,-2+2*m_MapSize,2-2*m_MapSize };
                                                   ^
Linking graphics
==== Building pyrogenesis (release) ====
Linking pyrogenesis

Thanks for trying to figure this out, I hope the compiler warnings aren't too annoying to fix.

comment:8 by wraitii, 10 years ago

In 14549:

If at first you don't succeed…
Refs #2359

comment:9 by wraitii, 10 years ago

Looks like GCC doesn't like converting from unsigned long int to signed long int (though in this case it's completely safe), and MSVC doesn't like adding -1 to something unsigned, even though again here it's completely safe.

Maybe the above "fix" removes those warnings.

comment:10 by Josh, 10 years ago

No more warnings on GCC 4.8.

comment:11 by historic_bruno, 10 years ago

Resolution: fixed
Status: reopenedclosed

Fixed in MSVC, thanks :)

Note: See TracTickets for help on using tickets.