[mpich-devel] [mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.2a1-34-geda105b
Dave Goodell (dgoodell)
dgoodell at cisco.com
Wed Oct 1 23:15:26 CDT 2014
On Oct 1, 2014, at 10:20 PM, Junchao Zhang <jczhang at mcs.anl.gov> wrote:
> On Wed, Oct 1, 2014 at 5:40 PM, Dave Goodell (dgoodell) <dgoodell at cisco.com>
> wrote:
>
>> Begin forwarded message:
>>
>>> - Log -----------------------------------------------------------------
>>>
>> http://git.mpich.org/mpich.git/commitdiff/eda105b029572ebf7f4008f6de2e1afb9ccf6fc2
>>>
>>> commit eda105b029572ebf7f4008f6de2e1afb9ccf6fc2
>>> Author: Junchao Zhang <jczhang at mcs.anl.gov>
>>> Date: Tue Sep 16 15:58:55 2014 -0500
>>>
>>> Remove unnessary array init in MPIU_CHKLMEM_DECL
>>>
>>> Initializing mpiu_chklmem_stk_sp_ to 0 should already have the effect
>> to
>>> initialize mpiu_chklmem_stk_[n_].
>>>
>>> Signed-off-by: Antonio J. Pena <apenya at mcs.anl.gov>
>>>
>>> diff --git a/src/include/mpimem.h b/src/include/mpimem.h
>>> index a217e8b..e1478a5 100644
>>> --- a/src/include/mpimem.h
>>> +++ b/src/include/mpimem.h
>>> @@ -317,7 +317,7 @@ extern char *strdup( const char * );
>>> }}
>>> #else
>>> #define MPIU_CHKLMEM_DECL(n_) \
>>> - void *(mpiu_chklmem_stk_[n_]) = {0};\
>>> + void *(mpiu_chklmem_stk_[n_]); \
>>> int mpiu_chklmem_stk_sp_=0;\
>>> MPIU_AssertDeclValue(const int mpiu_chklmem_stk_sz_,n_)
>>
>> You might want to revert this. My recollection is that not all compilers
>> are smart enough to see that mpiu_chklmem_stk_ is not used before being
>> defined, which can lead to a *lot* of warnings throughout the MPICH
>> codebase.
>>
>
> Dave, I don't quite understand your concern. I removed the array
> initialization code since MPIU_CHKLMEM_FREEALL() can only free pointers set
> before. The number of pointers is mpiu_chklmem_stk_sp_, which is
> initialized to 0.
Look, I don't have time (or frankly, that much interest) to run down an example compiler where this will happen, but I definitely made this change in the past because we were encountering the warning: http://git.mpich.org/mpich.git/commitdiff/70f4742
I wish I had made a better commit message at the time :-/
I have a suspicion that GCC ~4.1 with some set of (non-?)optimization flags would issue the "may be used uninitialized" warning, but I really don't recall for sure. I don't disagree with your analysis that the value cannot actually be used uninitialized, I'm just disputing whether the compiler will issue a warning about it.
Actually, it looks like I'm not the only person who has experienced this, Toni fixed an issue like this much more recently than 2009: http://git.mpich.org/mpich.git/commitdiff/d8b8eb6
>> Also, what's the sudden interest in restoring C89 support again? The
>> whole world really does support enough of C99 now... Seems like a big
>> waste of time and an unnecessary annoyance to developers who might want to
>> use useful C99 features (e.g., named structure initializers).
>>
>>
> See https://trac.mpich.org/projects/mpich/ticket/2167
That's not really an answer. It's just a rehash of the endless discussion that MPICH development has had for the past 7+ years.
Open MPI and many other projects now require nominal C99 compliance for any recent release. All the work that you did to run around and fix the "--enable-strict=c89" mode was just a huge waste of time. The correct fix is to delete "--enable-strict=c89" and embrace the "future" of 6+ years ago.
-Dave
More information about the devel
mailing list