G'day, After a long hiatus, in which I've been trying to improve my "Tecgraf/IM/CD/IUP" assistant toolkit for wider use, I'm now finally getting to the point where the code is starting to look more portable and manageable than before; there's still some way to go before it's ready for release as a project.
In the meantime, here's the output of "parse-build.lua" on the latest revision of IM (r736). As has been the case in the past, many, many of these warnings come from third-party libraries that were stable, state-of-the art at the time. The "trouble" is that there has been an aggressive campaign to improve the diagnostics of compilers, notably GCC, partially as a result of improved code path tracing/analysis. While updated versions of these libraries are available, that address the warnings properly, there has been insufficient reason to backport the libraries into IM (and CD and IUP, as relevant). The builds were done on an up-to-date GNU/Linux Mint 18.3 laptop, running GCC 6.5.0. (I do have Mint 19.1 installed on another machine, and have separately noted the build warnings for GCC 7.x, but am letting that battle pass for now.) So, attached is the build-warning summary for IM, revision 736. cheers, sur-behoffski (Brenton Hoff) programmer, Grouse Software
* No diagnostics for: #include expects "FILENAME" or <FILENAME> missing binary operator before token "(" converting to non-pointer type <TYPE> from NULL [-Wconversion-null] suggest explicit braces to avoid ambiguous 'else' [-Wdangling-else] <FUNC> is deprecated [-Wdeprecated-declarations] <FUNC1> is deprecated: Use <FUNC2> instead [-Wdeprecated-declarations] assignment discards <TYPE> qualifier from pointer target type [-Wdiscarded-qualifiers] too many arguments for format [-Wformat-extra-args] <FUNC> may write a terminating nul past the end of the destination [-Wformat-overflow=] <DIRECTIVE> directive writing 1 byte into a region of size between 0 and <BYTECOUNT> [-Wformat-overflow=] <DIRECTIVE> directive writing <BYTECOUNT1> bytes into a region of size between <BYTECOUNT2> and <BYTECOUNT3> [-Wformat-overflow=] <DIRECTIVE> directive writing between <BYTECOUNT1> and <BYTECOUNT2> bytes into a region of size between <BYTECOUNT3> and <BYTECOUNT4> [-Wformat-overflow=] <DIRECTIVE> directive writing up to <BYTECOUNT1> bytes into a region of size <BYTECOUNT2> [-Wformat-overflow=] format not a string literal and no format arguments [-Wformat-security] implicit declaration of function <FUNC1>; did you mean <FUNC2>? [-Wimplicit-function-declaration] assignment from incompatible pointer type [-Wincompatible-pointer-types] initialization from incompatible pointer type [-Wincompatible-pointer-types] passing argument <NUM> of <FUNC> from incompatible pointer type [-Wincompatible-pointer-types] <VAR> may be used uninitialized in this function [-Wmaybe-uninitialized] missing braces around initializer [-Wmissing-braces] suggest parentheses around '&&' within '||' [-Wparentheses] comparison between pointer and zero character constant [-Wpointer-compare] no return statement in function returning non-void [-Wreturn-type] control reaches end of non-void function [-Wreturn-type] this 'else' clause does not guard... [-Wmisleading-indentation] this 'for' clause does not guard... [-Wmisleading-indentation] this 'while' clause does not guard... [-Wmisleading-indentation] ignoring #pragma omp critical [-Wunknown-pragmas] ignoring #pragma omp for [-Wunknown-pragmas] ignoring #pragma omp parallel [-Wunknown-pragmas] ignoring #pragma omp section [-Wunknown-pragmas] ignoring #pragma warning [-Wunknown-pragmas] dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] enumeration value <ENUM> not handled in switch [-Wswitch] <EXPRESSION> is used uninitialized in this function [-Wuninitialized] <VAR> defined but not used [-Wunused-const-variable=] <FUNC> declared <TYPE> but never defined [-Wunused-function] label <LABEL> defined but not used [-Wunused-label] value computed is not used [-Wunused-value] unused variable <VAR> [-Wunused-variable] deprecated conversion from string constant to <TYPE> [-Wwrite-strings] (End of list.) comparison between <ENUM1> and <ENUM2> [-Wenum-compare]: libexif/fuji/mnote-fuji-entry.c:233:[Function:mnote_fuji_entry_get_value]: ExifTag {aka const enum <anonymous>} MnoteFujiTag {aka enum _MnoteFujiTag} libexif/olympus/mnote-olympus-entry.c:430:[Function:mnote_olympus_entry_get_value]: ExifTag {aka const enum <anonymous>} MnoteOlympusTag {aka enum _MnoteOlympusTag} libexif/olympus/mnote-olympus-entry.c:500:[Function:mnote_olympus_entry_get_value]: ExifTag {aka const enum <anonymous>} MnoteOlympusTag {aka enum _MnoteOlympusTag} libexif/pentax/mnote-pentax-entry.c:347:[Function:mnote_pentax_entry_get_value]: ExifTag {aka const enum <anonymous>} MnotePentaxTag {aka enum _MnotePentaxTag} libexif/pentax/mnote-pentax-entry.c:371:[Function:mnote_pentax_entry_get_value]: ExifTag {aka const enum <anonymous>} MnotePentaxTag {aka enum _MnotePentaxTag} format <FMT> expects argument of type <TYPE1>, but argument <NUM> has type <TYPE2> [-Wformat=]: libtiff/tif_predict.c:645:[Function:PredictorEncodeTile]: %u unsigned int 4 tmsize_t {aka long unsigned int} libexif/fuji/exif-mnote-data-fuji.c:227:[Function:exif_mnote_data_fuji_load]: %u unsigned int 5 size_t {aka long unsigned int} libexif/canon/exif-mnote-data-canon.c:270:[Function:exif_mnote_data_canon_load]: %u unsigned int 5 size_t {aka long unsigned int} libexif/olympus/exif-mnote-data-olympus.c:485:[Function:exif_mnote_data_olympus_load]: %u unsigned int 5 size_t {aka long unsigned int} libexif/pentax/exif-mnote-data-pentax.c:310:[Function:exif_mnote_data_pentax_load]: %u unsigned int 5 size_t {aka long unsigned int} libjasper/base/jas_debug.c:128:[Function:jas_memdump]: %x unsigned int 3 size_t {aka long unsigned int} libjasper/jpc/jpc_mqenc.c:388:[Function:jpc_mqenc_dump]: %d int 3 long int libjasper/jpc/jpc_mqdec.c:303:[Function:jpc_mqdec_dump]: %d int 3 long int libjasper/jpc/jpc_mqdec.c:304:[Function:jpc_mqdec_dump]: %d int 3 long int implicit declaration of function <FUNC> [-Wimplicit-function-declaration]: libjasper/base/jas_getopt.c:129:[Function:jas_getopt]: jas_eprintf libjasper/jpc/jpc_qmfb.c:1618:[Function:jpc_ft_synthesize]: jas_do_progress libjasper/jpc/jpc_qmfb.c:1619:[Function:jpc_ft_synthesize]: jas_test_abort libjasper/jpc/jpc_tsfb.c:124:[Function:jpc_tsfb_analyze]: jpc_tsfb_analyze2 libjasper/jpc/jpc_tsfb.c:151:[Function:jpc_tsfb_synthesize]: jpc_tsfb_synthesize2 libjasper/jpc/jpc_t1dec.c:248:[Function:jpc_dec_decodecblk]: jas_eprintf cast to pointer from integer of different size [-Wint-to-pointer-cast]: tiff_binfile.c:74:[Function:TIFFFdOpen]: tif = TIFFClientOpen(name, mode, (thandle_t) fd, iTIFFReadProc, iTIFFWriteProc, im_format_tiff.cpp:693:[MemeberFunction:virtual void* imFileFormatTIFF::Handle(int)]: return (void*)this->tiff->tif_fd; <VAR> is usually a function [-Wmain]: libjpeg/jdmainct.c:162:[Function:alloc_funny_pointers]: main libjpeg/jdmainct.c:203:[Function:make_funny_pointers]: main libjpeg/jdmainct.c:243:[Function:set_wraparound_pointers]: main libjpeg/jdmainct.c:272:[Function:set_bottom_pointers]: main libjpeg/jdmainct.c:309:[Function:start_pass_main]: main libjpeg/jdmainct.c:349:[Function:process_data_simple_main]: main libjpeg/jdmainct.c:389:[Function:process_data_context_main]: main libjpeg/jdmainct.c:478:[Function:jinit_d_main_controller]: main libjpeg/jcmainct.c:71:[Function:start_pass_main]: main libjpeg/jcmainct.c:117:[Function:process_data_simple_main]: main libjpeg/jcmainct.c:247:[Function:jinit_c_main_controller]: main the use of `tmpnam' is dangerous, better use `mkstemp': jas_stream.c:[At:(.text+0x6e6)]: suggest parentheses around assignment used as truth value [-Wparentheses]: libjasper/base/jas_image.c:230:[Function:jas_box_alloc]: if ( box->buf = (uint_fast8_t *) jas_malloc( size ) ) suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]: lua5/imlua_process.c:55:[Function:imluaProcessSplitComplex]: if (((_si)->data_type == IM_DOUBLE) || ((_si)->data_type == IM_CDOUBLE)) \ lua5/imlua_process.c:61:[Function:imluaProcessMergeComplex]: if (((_si)->data_type == IM_DOUBLE) || ((_si)->data_type == IM_CDOUBLE)) \ lua5/imlua_process.c:55:[Function:imluaProcessAutoCovariance]: if (((_si)->data_type == IM_DOUBLE) || ((_si)->data_type == IM_CDOUBLE)) \ lua5/imlua_process.c:55:[Function:imluaProcessNormalizeComponents]: if (((_si)->data_type == IM_DOUBLE) || ((_si)->data_type == IM_CDOUBLE)) \ lua5/imlua_process.c:55:[Function:imluaProcessNormDiffRatio]: if (((_si)->data_type == IM_DOUBLE) || ((_si)->data_type == IM_CDOUBLE)) \ lua5/imlua_process.c:55:[Function:imluaProcessSplitComplex]: if (((_si)->data_type == IM_DOUBLE) || ((_si)->data_type == IM_CDOUBLE)) \ lua5/imlua_process.c:61:[Function:imluaProcessMergeComplex]: if (((_si)->data_type == IM_DOUBLE) || ((_si)->data_type == IM_CDOUBLE)) \ lua5/imlua_process.c:55:[Function:imluaProcessAutoCovariance]: if (((_si)->data_type == IM_DOUBLE) || ((_si)->data_type == IM_CDOUBLE)) \ lua5/imlua_process.c:55:[Function:imluaProcessNormalizeComponents]: if (((_si)->data_type == IM_DOUBLE) || ((_si)->data_type == IM_CDOUBLE)) \ lua5/imlua_process.c:55:[Function:imluaProcessNormDiffRatio]: if (((_si)->data_type == IM_DOUBLE) || ((_si)->data_type == IM_CDOUBLE)) \ cast from pointer to integer of different size [-Wpointer-to-int-cast]: libjasper/base/jas_image.c:232:[Function:jas_box_alloc]: return (bool) box->buf; libjasper/jpc/jpc_t1enc.c:135:[Function:jpc_enc_enccblks]: jas_do_progress( (int) lvl, (int) (endlvls-1), "jpc: encode" ); libjasper/jpc/jpc_t1enc.c:135:[Function:jpc_enc_enccblks]: jas_do_progress( (int) lvl, (int) (endlvls-1), "jpc: encode" ); <VAR> will be initialized after [-Wreorder]: im_format_jp2.cpp:109:[Constructor:imFileFormatJP2::imFileFormatJP2(const imFormat*)]: imFileFormatJP2::image jas_image_t *image; ^~~~~ im_format_jp2.cpp:108:17: warning: 'jas_stream_t* imFileFormatJP2::stream' [-Wreorder] jas_stream_t *stream; ^~~~~~ im_format_jp2.cpp:112:3: warning: when initialized here [-Wreorder] imFileFormatJP2(const imFormat* _iformat) : imFileFormatBase(_iformat), image(0), stream(0), fmtid(-1) {} ^~~~~~~~~~~~~~~ im_format_jp2.cpp:108:[Constructor:imFileFormatJP2::imFileFormatJP2(const imFormat*)]: imFileFormatJP2::stream jas_stream_t *stream; ^~~~~~ im_format_jp2.cpp:107:7: warning: 'int imFileFormatJP2::fmtid' [-Wreorder] int fmtid; ^~~~~ im_format_jp2.cpp:112:3: warning: when initialized here [-Wreorder] imFileFormatJP2(const imFormat* _iformat) : imFileFormatBase(_iformat), image(0), stream(0), fmtid(-1) {} ^~~~~~~~~~~~~~~ case value <LABEL> not in enumerated type <ENUM> [-Wswitch]: libexif/exif-entry.c:1199:[Function:exif_entry_get_value]: 0 ExifTag {aka enum <anonymous>} libexif/exif-entry.c:1226:[Function:exif_entry_get_value]: 5 ExifTag {aka enum <anonymous>} libexif/exif-entry.c:1239:[Function:exif_entry_get_value]: 7 ExifTag {aka enum <anonymous>} this 'if' clause does not guard... [-Wmisleading-indentation]: libtiff/tif_read.c:495:[Function:TIFFFillStrip]: if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount) ^~ libtiff/tif_read.c:498:2: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if' if ((tif->tif_flags&TIFF_NOREADRAW)==0) ^~ libtiff/tif_read.c:798:[Function:TIFFFillTile]: if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount) ^~ libtiff/tif_read.c:801:2: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if' if ((tif->tif_flags&TIFF_NOREADRAW)==0) ^~ libtiff/tif_read.c:960:[Function:TIFFStartStrip]: if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount) ^~ libtiff/tif_read.c:963:2: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if' if ((tif->tif_flags & TIFF_CODERSETUP) == 0) { ^~ libtiff/tif_dirread.c:4272:[Function:EstimateStripByteCounts]: if( !_TIFFFillStriles( tif ) ) ^~ libtiff/tif_dirread.c:4275:2: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if' if (td->td_stripbytecount) ^~ process/im_analyze.cpp:727:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:727:27: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:737:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:737:27: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:747:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:747:27: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:840:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:840:29: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:969:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:969:25: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:727:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:727:27: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:737:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:737:27: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:747:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:747:27: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:840:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:840:29: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:969:[Function:int imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const double*, int, double*, double*, double*, double*)]: if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ process/im_analyze.cpp:969:25: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if' if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11); ^~ <FUNC> defined but not used [-Wunused-function]: libjasper/jpc/jpc_enc.c:886:[Function:jpc_enc_encodemainbody]: jpc_calcssexp libjasper/jpc/jpc_enc.c:870:[Function:jpc_enc_encodemainbody]: jpc_calcssmant ignoring return value of <FUNC>, declared with attribute warn_unused_result [-Wunused-result]: libjasper/base/jas_stream.c:369:[Function:jas_stream_tmpfile]: tmpnam statement with no effect [-Wunused-value]: libexif/fuji/mnote-fuji-tag.c:46:[Function:mnote_fuji_tag_get_title]: # define bindtextdomain(Domain,Directory) (Domain) libexif/fuji/mnote-fuji-tag.c:46:[Function:mnote_fuji_tag_get_description]: # define bindtextdomain(Domain,Directory) (Domain) libexif/canon/mnote-canon-tag.c:46:[Function:mnote_canon_tag_get_title]: # define bindtextdomain(Domain,Directory) (Domain) libexif/canon/mnote-canon-tag.c:46:[Function:mnote_canon_tag_get_description]: # define bindtextdomain(Domain,Directory) (Domain) libexif/olympus/mnote-olympus-tag.c:46:[Function:mnote_olympus_tag_get_title]: # define bindtextdomain(Domain,Directory) (Domain) libexif/olympus/mnote-olympus-tag.c:46:[Function:mnote_olympus_tag_get_description]: # define bindtextdomain(Domain,Directory) (Domain) libexif/pentax/mnote-pentax-tag.c:46:[Function:mnote_pentax_tag_get_title]: # define bindtextdomain(Domain,Directory) (Domain) libexif/pentax/mnote-pentax-tag.c:46:[Function:mnote_pentax_tag_get_description]: # define bindtextdomain(Domain,Directory) (Domain) libexif/exif-entry.c:46:[Function:exif_entry_get_value]: # define bindtextdomain(Domain,Directory) (Domain) libexif/exif-format.c:46:[Function:exif_format_get_name]: # define bindtextdomain(Domain,Directory) (Domain) libexif/exif-tag.c:46:[Function:exif_tag_get_title_in_ifd]: # define bindtextdomain(Domain,Directory) (Domain) libexif/exif-tag.c:46:[Function:exif_tag_get_description_in_ifd]: # define bindtextdomain(Domain,Directory) (Domain) <VAR> defined but not used [-Wunused-variable]: libjasper/jp2/jp2_cod.h:132:[#included-from:libjasper/jp2/jp2_cod.h:132]: xmp_uuid libjasper/jp2/jp2_cod.h:125:[#included-from:libjasper/jp2/jp2_cod.h:125]: msi_uuid libjasper/jp2/jp2_cod.h:132:[#included-from:libjasper/jp2/jp2_cod.h:132]: xmp_uuid variable <VAR> set but not used [-Wunused-but-set-variable]: libtiff/tif_open.c:106:[Function:TIFFClientOpen]: n libexif/olympus/mnote-olympus-entry.c:343:[Function:mnote_olympus_entry_get_value]: d libjasper/base/jas_icc.c:1072:[Function:jas_icctxtdesc_copy]: txtdesc libjasper/base/jas_icc.c:1259:[Function:jas_icclut8_copy]: lut8 libjasper/base/jas_image.c:1360:[Function:jas_image_chclrspc]: numoutchans libjasper/base/jas_image.c:1353:[Function:jas_image_chclrspc]: numinauxchans libjasper/jp2/jp2_dec.c:115:[Function:jp2_decode]: cdefd libjasper/jpc/jpc_t1enc.c:210:[Function:jpc_enc_enccblk]: rlvl libjasper/jpc/jpc_t1enc.c:205:[Function:jpc_enc_enccblk]: ret libjasper/jpc/jpc_dec.c:438:[Function:jpc_dec_process_crg]: crg libjasper/jpc/jpc_dec.c:702:[Function:jpc_dec_tileinit]: brcbgyend libjasper/jpc/jpc_enc.c:873:[Function:jpc_calcssmant]: e libjasper/jpc/jpc_enc.c:904:[Function:jpc_enc_encodemainhdr]: mctsynweight libjasper/jpc/jpc_enc.c:1121:[Function:jpc_enc_encodemainbody]: numbytes libjasper/jpc/jpc_enc.c:1107:[Function:jpc_enc_encodemainbody]: tiley libjasper/jpc/jpc_enc.c:1106:[Function:jpc_enc_encodemainbody]: tilex warning: ISO C++ forbids converting a string constant to <TYPE> [-Wwrite-strings]: im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_tiff.cpp:[At:52]: char* im_format_png.cpp:597:[MemeberFunction:void imFileFormatPNG::iWriteAttrib(imAttribTable*)]: png_charp {aka char*}
_______________________________________________ Iup-users mailing list Iup-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/iup-users