------- Comment #3 from fxcoudert at gcc dot gnu dot org 2008-02-10 15:37
-------
I have managed to reduce it a bit more, and it does not involve passing the
loop variable as an argument:
program outer
integer k, a(1)
a = 0.0
!$OMP PARALLEL DO
do k = 1, 1
call inner
end do
!$OMP END PARALLEL DO
print *, a(1)
contains
subroutine inner
a(1) = 42
end subroutine inner
end program outer
>From the tree dump, I've made the following C testcase which also exhibits the
same bug:
$ cat u.c
int main (void)
{
int a[1], k;
void inner (void) { a[0] = 42; }
a[0] = 0;
#pragma omp parallel
#pragma omp for private(k) nowait
for (k = 1; k <= 1; k = k + 1)
inner ();
__builtin_printf ("%d\n", a[0]);
return 0;
}
$ gcc -fopenmp u.c && ./a.out
0
There is no OpenMP component, and since I'm not sure the C code I have created
is valid, I leave this bug as "fortran" for now... but I think it's a generic
issue of contained functions.
--
fxcoudert at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |fxcoudert at gcc dot gnu dot
| |org
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Last reconfirmed|0000-00-00 00:00:00 |2008-02-10 15:37:46
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35130