Hello:

I am a pgRouting developer.

In my CmakeLists.txt I use this flags:
set(CMAKE_C_FLAGS   "${CMAKE_C_FLAGS}   -std=gnu99 -fPIC -O2 -g -Wall 
-Wconversion -pedantic -fmax-errors=10  -Wmissing-prototypes -frounding-math")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -fPIC -O2 -g -Wconversion 
-Wall -pedantic -fmax-errors=10 -Wextra  -frounding-math -Wno-deprecated")


for testing I use travis CI framework and test pgRouting using postgresql 9.1 
to 9.5
I follow the instructions for including:
#include "postgres.h"
#include "executor/spi.h"
#include "funcapi.h"
#include "catalog/pg_type.h"
#if PGSQL_VERSION > 92
#include "access/htup_details.h"
#endif
#include "fmgr.h"


I wonder if -std=gnu99 is the correct standard to include postgres.h etc. in 
9.5 
because that standard (and all the flags I am using to generate pgrouting code 
without warnings)
catches the following catches warnings of type conversions on some postgresql 
included files.
This doesn't happen on postgresql 9.1 to 9.4

for example:

In file included from /usr/include/postgresql/9.5/server/postgres.h:47:0,
                 from 
/home/travis/build/pgRouting/pgrouting/src/dijkstra/src/many_to_many_dijkstra.c:31:
/usr/include/postgresql/9.5/server/c.h:298:9: warning: ISO C does not support 
‘__int128’ type [-pedantic]
/usr/include/postgresql/9.5/server/c.h:299:18: warning: ISO C does not support 
‘__int128’ type [-pedantic]




In file included from /usr/include/postgresql/9.5/server/port/atomics.h:119:0,
                 from /usr/include/postgresql/9.5/server/storage/lwlock.h:19,
                 from /usr/include/postgresql/9.5/server/storage/lock.h:18,
                 from /usr/include/postgresql/9.5/server/access/genam.h:20,
                 from /usr/include/postgresql/9.5/server/nodes/execnodes.h:17,
                 from /usr/include/postgresql/9.5/server/executor/execdesc.h:18,
                 from /usr/include/postgresql/9.5/server/utils/portal.h:50,
                 from /usr/include/postgresql/9.5/server/executor/spi.h:18,
                 from 
/home/travis/build/pgRouting/pgrouting/src/dijkstra/src/many_to_many_dijkstra.c:32:
/usr/include/postgresql/9.5/server/port/atomics/generic.h: In function 
‘pg_atomic_add_fetch_u32_impl’:
/usr/include/postgresql/9.5/server/port/atomics/generic.h:238:2: warning: 
conversion to ‘uint32’ from ‘int32’ may change the sign of the result 
[-Wsign-conversion]
/usr/include/postgresql/9.5/server/port/atomics/generic.h: In function 
‘pg_atomic_sub_fetch_u32_impl’:
/usr/include/postgresql/9.5/server/port/atomics/generic.h:247:2: warning: 
conversion to ‘uint32’ from ‘int32’ may change the sign of the result 
[-Wsign-conversion]
/usr/include/postgresql/9.5/server/port/atomics/generic.h: In function 
‘pg_atomic_add_fetch_u64_impl’:
/usr/include/postgresql/9.5/server/port/atomics/generic.h:372:2: warning: 
conversion to ‘long unsigned int’ from ‘int64’ may change the sign of the 
result [-Wsign-conversion]
/usr/include/postgresql/9.5/server/port/atomics/generic.h: In function 
‘pg_atomic_sub_fetch_u64_impl’:
/usr/include/postgresql/9.5/server/port/atomics/generic.h:381:2: warning: 
conversion to ‘long unsigned int’ from ‘int64’ may change the sign of the 
result [-Wsign-conversion]
of course, I can't go and modify  generic.h, c.h which are included when I 
include postgres.h or spi.h, or any of the files
that I include that are of the postgresql project.

I already posted in this mailing list 
http://www.postgresql.org/message-id/bay177-w104ec0b93c9fc5453b04cd8a...@phx.gbl
But talking with my co-developer Steve Woodbri, he suggested this mailing list.


you can see a full travis test here:
https://travis-ci.org/pgRouting/pgrouting/builds/108791787
(I have my own warnings which I am fixing and are very visible from 9.1 to 9.4)

Note1: when pgRouting gets released, all those flags:
-Wall -Wconversion -pedantic -fmax-errors=10  -Wmissing-prototypes
will be removed, and of course those warnings won't show up.




Thanks
Vicky Vergara                                     

Reply via email to