You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Admittedly, I do not see any immediate need to address any of these warnings.
Kind regards,
Steffen
$ gcc --version
gcc (Debian 10.2.0-3) 10.2.0
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I. -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/home/moeller/git/med-team/libgclib=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -pedantic -flto -fPIC -D_FILE_OFFSET_BITS=64 -c GStr.cpp -fPIC -DPIC -o .libs/libgclib_la-GStr.o
In file included from gff.cpp:1:
gff.h:229:13: warning: ISO C++ prohibits anonymous structs [-Wpedantic]
229 | struct {
| ^
gff.h:232:13: warning: ISO C++ prohibits anonymous structs [-Wpedantic]
232 | struct {
| ^
gff.h:328:12: warning: ISO C++ prohibits anonymous structs [-Wpedantic]
328 | struct {
| ^
gff.h:691:14: warning: ISO C++ prohibits anonymous structs [-Wpedantic]
691 | struct {
| ^
gff.h:1150:12: warning: ISO C++ prohibits anonymous structs [-Wpedantic]
1150 | struct {
| ^
In file included from GList.hh:8,
from GFastaIndex.h:12,
from GFaSeqGet.h:3,
from gff.h:9,
from gff.cpp:1:
GVec.hh: In instantiation of ‘void GVec<OBJ>::setCapacity(int) [with OBJ = GMapSeg]’:
GVec.hh:202:3: required from ‘GVec<OBJ>::GVec(int) [with OBJ = GMapSeg]’
gff.h:127:50: required from here
GVec.hh:291:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘class GMapSeg’; use assignment or value-initialization instead [-Wclass-memaccess]
291 | memset(fArray+fCount, 0, (NewCapacity-fCount)*sizeof(OBJ));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from gff.cpp:1:
gff.h:70:7: note: ‘class GMapSeg’ declared here
70 | class GMapSeg:public GSeg {
| ^~~~~~~
In file included from GList.hh:8,
from GFastaIndex.h:12,
from GFaSeqGet.h:3,
from gff.h:9,
from gff.cpp:1:
GVec.hh: In instantiation of ‘void GVec<OBJ>::setCapacity(int) [with OBJ = GSeg]’:
GVec.hh:202:3: required from ‘GVec<OBJ>::GVec(int) [with OBJ = GSeg]’
gff.h:311:92: required from here
GVec.hh:291:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘class GSeg’; use assignment or value-initialization instead [-Wclass-memaccess]
291 | memset(fArray+fCount, 0, (NewCapacity-fCount)*sizeof(OBJ));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from gff.h:6,
from gff.cpp:1:
GBase.h:308:7: note: ‘class GSeg’ declared here
308 | class GSeg {
| ^~~~
In file included from GList.hh:8,
from GFastaIndex.h:12,
from GFaSeqGet.h:3,
from gff.h:9,
from gff.cpp:1:
GVec.hh: In instantiation of ‘void GVec<OBJ>::setCapacity(int) [with OBJ = GeneCDS]’:
GVec.hh:202:3: required from ‘GVec<OBJ>::GVec(int) [with OBJ = GeneCDS]’
gff.h:1351:31: required from here
GVec.hh:291:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘class GeneCDS’; use assignment or value-initialization instead [-Wclass-memaccess]
291 | memset(fArray+fCount, 0, (NewCapacity-fCount)*sizeof(OBJ));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from gff.cpp:1:
gff.h:1340:7: note: ‘class GeneCDS’ declared here
1340 | class GeneCDS: public GSeg {
| ^~~~~~~
In file included from GList.hh:8,
from GFastaIndex.h:12,
from GFaSeqGet.h:3,
from gff.h:9,
from gff.cpp:1:
GVec.hh: In instantiation of ‘void GVec<OBJ>::setCapacity(int) [with OBJ = GffExon]’:
GVec.hh:202:3: required from ‘GVec<OBJ>::GVec(int) [with OBJ = GffExon]’
gff.cpp:2315:16: required from here
GVec.hh:291:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘class GffExon’; use assignment or value-initialization instead [-Wclass-memaccess]
291 | memset(fArray+fCount, 0, (NewCapacity-fCount)*sizeof(OBJ));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from gff.cpp:1:
gff.h:629:7: note: ‘class GffExon’ declared here
629 | class GffExon : public GSeg {
| ^~~~~~~
In file included from GList.hh:8,
from GFastaIndex.h:12,
from GFaSeqGet.h:3,
from gff.h:9,
from gff.cpp:1:
GVec.hh: In instantiation of ‘void GVec<OBJ>::setCapacity(int) [with OBJ = GSegMatch]’:
GVec.hh:202:3: required from ‘GVec<OBJ>::GVec(int) [with OBJ = GSegMatch]’
GList.hh:191:76: required from ‘GArray<OBJ>::GArray(int (*)(pointer, pointer)) [with OBJ = GSegMatch; GCompareProc = int(void*, void*); pointer = void*]’
gff.h:1351:31: required from here
GVec.hh:291:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘class GSegMatch’; use assignment or value-initialization instead [-Wclass-memaccess]
291 | memset(fArray+fCount, 0, (NewCapacity-fCount)*sizeof(OBJ));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from gff.cpp:1:
gff.h:1328:7: note: ‘class GSegMatch’ declared here
1328 | class GSegMatch { //keep track of "matching" overlaps of a GeneCDSChain with multiple GeneSegment containers
| ^~~~~~~~~
In file included from GList.hh:8,
from GFastaIndex.h:12,
from GFaSeqGet.h:3,
from gff.h:9,
from gff.cpp:1:
GVec.hh: In instantiation of ‘void GVec<OBJ>::Grow(int, OBJ&) [with OBJ = GSegMatch]’:
GVec.hh:437:9: required from ‘void GVec<OBJ>::Insert(int, OBJ*) [with OBJ = GSegMatch]’
GVec.hh:69:44: required from ‘void GVec<OBJ>::Insert(int, OBJ) [with OBJ = GSegMatch]’
GList.hh:234:21: required from ‘int GArray<OBJ>::Add(OBJ*) [with OBJ = GSegMatch]’
GList.hh:51:36: required from ‘int GArray<OBJ>::Add(OBJ&) [with OBJ = GSegMatch]’
gff.h:1364:22: required from here
GVec.hh:358:15: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘class GSegMatch’; use assignment or value-initialization instead [-Wclass-memaccess]
358 | memset(&newList[fCount+1], 0, (NewCapacity-fCount-1)*sizeof(OBJ));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from gff.cpp:1:
gff.h:1328:7: note: ‘class GSegMatch’ declared here
1328 | class GSegMatch { //keep track of "matching" overlaps of a GeneCDSChain with multiple GeneSegment containers
| ^~~~~~~~~
The text was updated successfully, but these errors were encountered:
Thank you for pointing these out, had no idea ISO C++ is denying the convenience of anonymous structs. It's not that hard to adjust the code to fix it and I'll do it, just seems unnecessarily limiting.
The memset thing puzzles me, I saw it flagged before when using sanitizers but I cannot yet figure out why the compiler doesn't see that's conditional code there (template based), memset should only be called for the primitive types I am allowing there, yet somehow I keep getting that warning for GSeg. I have to dig a bit deeper there -- thank you for compiling this on such a new compiler to expose these issues.
Hello,
Admittedly, I do not see any immediate need to address any of these warnings.
Kind regards,
Steffen
The text was updated successfully, but these errors were encountered: