https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61478

            Bug ID: 61478
           Summary: wrong handling of variable scopes inside for loop
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mkrasowski at gmail dot com

Hi, 

the following fails to compile (as expected):

void foo() 
{
    for(int i = 0; i < 10; i++) {
        double i = 11;
    }
}

int main() {
    foo();
    return 0;
}

with the following error:
gcc1.cc: In function 'void foo()':
gcc1.cc:6:16: error: redeclaration of 'double i'
         double i = 11;
                ^
gcc1.cc:5:13: note: 'int i' previously declared here
     for(int i = 0; i < 10; i++) {

However adding internal loop caused the above to compile i.e.
void foo() 
{
    for(int i = 0; i < 10; i++) {
        for(int i = 0; i < 10; i++) {
            int j = 2 * i;
        }   
        double i = 11; 
    }   
}
compiles with no warnings (if compiled with -Wall it will generate warning
about unused variables). 

g++ 4.9.0 on x32_64 linux (latest arch linux), i.e.
% g++ --version
g++ (GCC) 4.9.0 20140604 (prerelease)

Regards, 
marcin

Reply via email to