After adding support for C99, I'm in favor of using for loop declarations

  for (PetscInt i=0; i<n; i++)

whenever possible.  However, I don't think it's worth refactoring existing 
code, especially if it isn't automated.  I can imagine some day clang-tidy 
might be capable of automating such a transformation across an entire project 
without breaking other PETSc conventions (especially with respect to CHKERRQ), 
at which point we could consider whether the modest clarity improvement is 
worth the code churn.

At most, I would enable (and fix) -Wshadow=compatible-local at this time.

Jacob Faibussowitsch <[email protected]> writes:

> Hello All,
>
> I discovered a rather obscure set of compiler flags -Wshadow, -Wshadow=local, 
> -Wshadow=compatible-local while trying to track down a bug which warn about 
> local redefinition of a variable. Out of curiosity I also recompiled petsc 
> with this flag and lo and behold the src is littered with shadowed variables. 
> From what I can tell most are likely harmless — defining an iterator variable 
> in the beginning of the function with all the rest of the variables, then 
> redefining it later in some loop — but maybe we should consider adding this 
> as a CI flag as it isn’t activated by -Wall.
>
> Best regards,
>
> Jacob Faibussowitsch
> (Jacob Fai - booss - oh - vitch)
> Cell: (312) 694-3391

Reply via email to