GCC rightfully complains about redefined variables, as iterator declarations appear inside loops with a loop variable of the same name. This patch has been sent upstream. --- a/sets.cpp 2015-06-25 11:22:08.252821681 +0200 +++ b/sets.cpp 2015-06-25 11:22:23.239187985 +0200 @@ -768,11 +768,11 @@ ////////////////////////////////////////////// // Reset original missing status - vector::iterator i = PP->sample.begin(); - while ( i != PP->sample.end() ) + vector::iterator it = PP->sample.begin(); + while ( it != PP->sample.end() ) { - (*i)->missing = (*i)->flag; - ++i; + (*it)->missing = (*it)->flag; + ++it; } //////////////////////////////////////////////// --- a/elf.cpp 2009-10-10 18:00:21.000000000 +0200 +++ b/elf.cpp 2015-06-25 11:34:06.136835756 +0200 @@ -1175,10 +1175,10 @@ << setw(8) << gcnt << " " << setw(8) << (double)cnt / (double)gcnt << "\n"; - map::iterator i = chr_cnt.begin(); - while ( i != chr_cnt.end() ) + map::iterator it = chr_cnt.begin(); + while ( it != chr_cnt.end() ) { - int c = i->first; + int c = it->first; int x = chr_cnt.find( c )->second; int y = chr_gcnt.find( c )->second; @@ -1189,7 +1189,7 @@ << setw(8) << y << " " << setw(8) << (double)x / (double)y << "\n"; - ++i; + ++it; } } --- plink-1.07-src/idhelp.cpp 2009-10-10 18:00:22.000000000 +0200 +++ plink-1.07-src/idhelp.cpp.patched 2015-06-25 11:37:39.387204086 +0200 @@ -772,12 +772,12 @@ for (int j = 0 ; j < jointField.size(); j++ ) { set & jf = jointField[j]; - set::iterator j = jf.begin(); + set::iterator jit = jf.begin(); PP->printLOG(" { "); - while ( j != jf.end() ) + while ( jit != jf.end() ) { - PP->printLOG( (*j)->name + " " ); - ++j; + PP->printLOG( (*jit)->name + " " ); + ++jit; } PP->printLOG(" }"); }