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 , 10 years ago
Owner: | set to |
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:2 by , 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 , 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 , 10 years ago
Resolution: | fixed |
---|---|
Status: | closed → reopened |
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 , 10 years ago
Does [14539] fix those? I used size_t by mistake, it's definitely signed.
comment:6 by , 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 , 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:9 by , 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.
In 14529: