8, 7, 6, 5, and 4 (for Gaussian) are fixed in the clang_warnings branch.
I have solutions for 4 (for FFT) and 2 (the abs/labs part), but I'm not sure
how portable they are. See below.
I'll need to think some more about 2 (the Anyval part).
#####################
inc is of type PDL_Indx, on my machine that is long, but it could be longlong
(and thus need llabs), so this might just be kicking the can down the road:
diff --git a/Basic/Core/pdlapi.c b/Basic/Core/pdlapi.c
index 43d649d..c709b3d 100644
--- a/Basic/Core/pdlapi.c
+++ b/Basic/Core/pdlapi.c
@@ -1447,7 +1447,7 @@ void pdl_make_physvaffine(pdl *it)
/* inc = the increment at the current stage */
inc = it->vafftrans->incs[i];
incsign = (inc >= 0 ? 1:-1);
- inc= abs(inc);
+ inc= labs(inc);
newinc = 0;
/* For all dimensions of the current piddle */
for(j=current->ndims-1; j>=0 && current->dimincs[j] !=
0; j--) {
#####################
Similarly here: types L, N, and Q could need abs, labs, or llabs depending on
the implementation.
diff --git a/Lib/FFT/fft.pd b/Lib/FFT/fft.pd
index 291e055..3bac5a4 100644
--- a/Lib/FFT/fft.pd
+++ b/Lib/FFT/fft.pd
@@ -561,7 +561,10 @@ pp_def('cdiv',
ai = $ai();
br = $br();
bi = $bi();
- if (fabs(br) > fabs(bi)) {
+ if (types(BU) %{ br > bi %}
+ types(SL) %{ abs(br) > abs(bi) %}
+ types(NQ) %{ labs(br) > labs(bi) %}
+ types(FD) %{ fabs(br) > fabs(bi) %} ) {
tt = bi/br;
dn = br + tt*bi;
$cr() = (ar+tt*ai)/dn;
cheers,
Derek
> On Jun 3, 2016, at 10:44 PM, Derek Lamb <[email protected]> wrote:
>
> 1) was addressed in the deprecate-finite branch that was recently merged into
> master post-2.016.
>
> 3) is addressed in the types-printconv branch that has not yet been
> merged—needs some code review to make sure it will pass on 32-bit and 64-bit
> platforms with different values of ivsize, etc. It hadn't been shaken out
> enough yet to merge before 2.016. It probably could be generalized and used
> in other places as well. Or even made a little cleaner: generating some
> "#define USHORT_FLAG hu" (or whatever) statements in pdl.h instead of the
> ugly (but working) current implementation.
>
> clang complains about a lot of things that really aren't problems or that
> fixing may cause more portability problems for different
> compilers/architectures. Or that are sort-of-generic code that needs thought
> into how to deal with all the different datatypes that a chunk of code might
> actually see. So if you'd like to fix them, go ahead, but proceed slowly,
> and push to branches, not to master. See the recommended workflow in the
> DEVELOPMENT file—it's spelled out step-by-step there.
>
> cheers,
> Derek
>
>> On Jun 3, 2016, at 10:11 PM, Karl Glazebrook <[email protected]> wrote:
>>
>> Any reason why these 8 build warnings in PDL aren’t trivial to fix? [e.g.
>> would it break other architectures...]
>>
>> Yes I’ve been ignoring them for a long time, but perhaps it is time for a
>> spring clean?
>>
>> - Karl
>>
>> —------------------------------------------------------
>>
>> 1)
>>
>> pdlcore.c:1292:86: warning: format specifies type 'double' but the argument
>> has type 'PDL_Indx' (aka 'long') [-Wformat]
>> fprintf(stderr,"Warning: pdl_setav_Indx converted undef to (%g) %ld
>> time%s\n",undefval,undef_count,undef_count==1?"":"s");
>> ~~
>> ^~~~~~~~
>> %ld
>> pdlcore.c:1675:87: warning: format specifies type 'double' but the argument
>> has type 'PDL_Short' (aka 'short') [-Wformat]
>> fprintf(stderr,"Warning: pdl_setav_Short converted undef to (%g) %ld
>> time%s\n",undefval,undef_count,undef_count==1?"":"s");
>>
>>
>> etc etc etc
>>
>> —————————————————————————————————
>>
>> 2)
>>
>> pdlapi.c:500:29: warning: format specifies type 'double' but the argument
>> has type 'PDL_Anyval' [-Wformat]
>> printf("%s%f",(i?" ":""),pdl_get_offs(it,i));
>> ~~ ^~~~~~~~~~~~~~~~~~
>> pdlapi.c:1450:9: warning: absolute value function 'abs' given an argument of
>> type 'PDL_Indx' (aka 'long') but has parameter of type 'int' which may cause
>> truncation of value [-Wabsolute-value]
>> inc= abs(inc);
>> ^
>> pdlapi.c:1450:9: note: use function 'labs' instead
>> inc= abs(inc);
>>
>> —————————————————————————————————
>>
>> 3) in Bad.xs Math.xs and Ufunc.xs a lot of:
>>
>>
>> Math.xs:13157:43: warning: 'finite' is deprecated: first deprecated in OS X
>> 10.9 [-Wdeprecated-declarations]
>> (c_datap)[0] PDL_COMMENT("ACCESS()") = ( finite((a_datap)[0]
>> PDL_COMMENT("ACCESS()") ) && (a_datap)[0] PDL_COMMENT("ACCESS()") !=
>> a_badval ) ? (a_dat...
>> ^
>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/math.h:757:12:
>> note: 'finite' has been
>> explicitly marked deprecated here
>> extern int finite(double) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,
>> __MAC_10_9, __IPHONE_NA, __IPHONE_NA);
>>
>>
>> etc…
>>
>> —————————————————————————————————
>>
>>
>> 4) Gaussian.xs and FFT.xs a lot of:
>>
>>
>> Gaussian.xs:672:18: warning: using integer absolute value function 'abs'
>> when argument is of floating point type [-Wabsolute-value]
>> if (
>> abs((xval_datap)[0+(__inc_xval_n*PP_INDTERM(__privtrans->__n_size, n))]
>> PDL_COMMENT("ACCESS()") -xmin) > 0.9*abs(xmax-xmin) ) {
>> ^
>> Gaussian.xs:672:18: note: use function 'fabs' instead
>> if (
>> abs((xval_datap)[0+(__inc_xval_n*PP_INDTERM(__privtrans->__n_size, n))]
>> PDL_COMMENT("ACCESS()") -xmin) > 0.9*abs(xmax-xmin) ) {
>> ^~~
>> fabs
>>
>>
>> etc.
>> —————————————————————————————————
>>
>>
>> 5)
>>
>>
>> resample.c:292:14: warning: implicitly declaring library function 'strcmp'
>> with type 'int (const char *, const char *)'
>> } else if (!strcmp(kernel_type, "default")) {
>> ^
>> resample.c:292:14: note: include the header <string.h> or explicitly provide
>> a declaration for 'strcmp'
>> 1 warning generated.
>>
>>
>> 6) ./SlatecProtos.h:1:8: warning: type specifier missing, defaults to 'int'
>> [-Wimplicit-int]
>> extern ssvdc_ ();
>> ~~~~~~ ^
>> ./SlatecProtos.h:2:8: warning: type specifier missing, defaults to 'int'
>> [-Wimplicit-int]
>> extern spoco_ ();
>> ~~~~~~ ^
>>
>> —————————————————————————————————
>>
>>
>> 7)
>>
>> INTEG.xs:18122:10: warning: implicit declaration of function 'warn' is
>> invalid in C99 [-Wimplicit-function-declaration]
>> warn("Bounds checking is disabled for PDL::GSL::INTEG");
>> —————————————————————————————————
>>
>> ^
>>
>> 8) RNG.xs:48112:10: warning: enumeration values 'PDL_IND' and 'PDL_LL' not
>> handled in switch [-Wswitch]
>> switch(in->datatype) {
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
>> patterns at an interface-level. Reveals which users, apps, and protocols are
>> consuming the most bandwidth. Provides multi-vendor support for NetFlow,
>> J-Flow, sFlow and other flows. Make informed decisions using capacity
>> planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
>> _______________________________________________
>> pdl-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/pdl-devel
>>
>
>
> ------------------------------------------------------------------------------
> What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
> patterns at an interface-level. Reveals which users, apps, and protocols are
> consuming the most bandwidth. Provides multi-vendor support for NetFlow,
> J-Flow, sFlow and other flows. Make informed decisions using capacity
> planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
> _______________________________________________
> pdl-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/pdl-devel
>
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity
planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
pdl-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pdl-devel