http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49100

--- Comment #1 from Joel Yliluoma <bisqwit at iki dot fi> 2011-05-21 11:31:46 
UTC ---
It also does not happen with C's nested functions. This for instance compiles
and works just fine (to my surprise).

#include <stdio.h>
int main()
{
    int a;
    #pragma omp parallel for
    for(a=0; a<10; ++a)
    {
        int c() { return 65; }
        putchar( c() );
    }
    return 0;
}

I venture into another bug report here, but I wonder if this is a bug or
intentional behavior, that the code below outputs "YYYYYYYYYY", as though the
variable "a" within c() is bound to the a from the surrounding context rather
than the OpenMP loop's private copy of "a". If the OpenMP loop is removed, it
outputs "ABCDEFGHIJ" as expected.

#include <stdio.h>
int main()
{
    int a = 24;
    #pragma omp parallel for
    for(a=0; a<10; ++a)
    {
        int c() { return a+65; }
        putchar( c() );
    }
    return 0;
}

Reply via email to