I just had a bad experience with (void) so feel it is only a half-answer.
> On Sep 13, 2016, at 10:45 AM, Satish Balay <[email protected]> wrote: > > On Tue, 13 Sep 2016, Barry Smith wrote: > >> >>> On Sep 13, 2016, at 10:13 AM, Satish Balay <[email protected]> wrote: >>> >>> There is stuff like: >>> >>> src/mat/order/fn1wd.c >>> >>> - kstop = (i__2 = xadj[node + 1], (PetscInt)PetscAbsInt(i__2)) - 1; >>> + kstop = (PetscInt)PetscAbsInt(xadj[node + 1]) - 1; >>> >>> Perhaps PetscAbsInt() type stuff should be switched over to static inline? >>> Or use a different notation? >>> >>> i__2 = xadj[node + 1]; >>> kstop = (PetscInt)PetscAbsInt(i__2) - 1; >> >> This is the way any normal person would write it :-) > > I think the first one is what is more intutive. The second one is > clearly encoding an optimization - as the code is aware PetscAbsInt() > is a macro - not a proper function. Hence the thought about 'static inline' > > The first change compiles fine [with clang - both c, complex - but > don't know if there are problem compilers] > > I'm now inclined to just preserve the current usage with void: > > kstop = ((void)(i__2 = xadj[node + 1]), (PetscInt)PetscAbsInt(i__2)) - 1; > >> >>> >>> And for the following - use 'void' as compiler suggests? >>> >>> a/src/mat/utils/pheap.c >>> - while (par = Parent(loc), Value(h,par) > val) { >>> + while ((void)(par = Parent(loc)), Value(h,par) > val) { >>> >>> a/src/dm/impls/plex/plexdistribute.c >>> - for (q = 0; q < numAdj || (adj[numAdj++] = support[s],0); ++q) { >>> + for (q = 0; q < numAdj || ((void)(adj[numAdj++] = support[s]),0); >>> ++q) { >> >> Does the (void) work to eliminate the warning? > > yes. > > Satish > >> >> Barry >> >>> >>> >>> And this one is perhaps for Matt.. >>> >>>>>>>>>>>>>>>>>>>>>> >>> CC arch-clang-cmplx/obj/src/dm/impls/composite/pack.o >>> /home/balay/petsc/src/dm/impls/composite/pack.c:657:17: warning: passing an >>> object that undergoes default argument promotion to 'va_start' has >>> undefined behavior [-Wvarargs] >>> va_start(Argp,imode); >>> ^ >>> /home/balay/petsc/src/dm/impls/composite/pack.c:641:61: note: parameter of >>> type 'InsertMode' is declared here >>> PetscErrorCode DMCompositeGather(DM dm,Vec gvec,InsertMode imode,...) >>> ^ >>> 1 warning generated. >>> <<<<<<<<<<<<<<<<< >>> >>> >>> >>> Satish >>> >>> On Mon, 12 Sep 2016, Barry Smith wrote: >>> >>>> >>>> Satish, >>>> >>>> Interesting. We can probably get rid of most of the other warnings >>>> easily; it looks like mostly frivolous use of the , notation. >>>> >>>> Barry >>>> >>>>> On Sep 12, 2016, at 11:19 PM, Satish Balay <[email protected]> wrote: >>>>> >>>>> The attached patch gets rid of most of the warnings [esp MPI usage >>>>> from PETSc code - with the logging wrappers]. >>>>> >>>>> [also added to balay/clang-Wcomma] >>>>> >>>>> Satish >>>>> >>>>> On Mon, 12 Sep 2016, Satish Balay wrote: >>>>> >>>>>> ok - so you are using CFLAGS=-Wcomma on your build.. >>>>>> >>>>>> I see warnings now. Attaching make.log >>>>>> >>>>>> Satish >>>>>> >>>>>> On Mon, 12 Sep 2016, Eric Chamberland wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> Le 2016-09-12 à 17:32, Satish Balay a écrit : >>>>>>>> Do you get these warnings with PETSc library build aswell? >>>>>>> I can't tell since I didn't tried to build PETSc with clang... >>>>>>>> >>>>>>>> The logging code tries to log all messages in library and in >>>>>>>> application - and prints a summary with -info. >>>>>>>> >>>>>>>> You can disable logging in your build with configure option: >>>>>>>> --with-log=0 >>>>>>>> >>>>>>>> Or you can define the PETSC_HAVE_BROKEN_RECURSIVE_MACRO in your >>>>>>>> code/compile - and the wrappers will be skipped.. >>>>>>> ok, so these may be good workaround for me to keep -Wcomma activated on >>>>>>> our >>>>>>> "push server" that filters incoming commits... >>>>>>> >>>>>>> Thanks!!! >>>>>>> >>>>>>> Eric >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> <clang-Wcomma.patch><make.log>
