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

--- Comment #1 from Henry Le Berre <hberre3 at gatech dot edu> ---
Here is a more minimal version:

m_mod.f90:
```fortran
module m_mod

    real(kind(0d0)),allocatable, dimension(:) :: arrs
    !$acc declare create(arrs)

contains

    subroutine s_mod_init()

        allocate(arrs(10))

        !$acc enter data create(arrs(10))

        !$acc update device(arrs(10))

        !$acc exit data delete(arrs)

    end subroutine s_mod_init

end module m_mod
```


p_main.f90:
```

program p_main

    use m_mod

    call s_mod_init()

end program p_main
```

Here is a C version that runs without issue:

m_mod.c:
```
#include <stdio.h>
#include <stdlib.h>

double* arrs;

#pragma acc declare create(arrs)

void m_mod_init() {
    arrs = (double*)malloc(10*sizeof(double));

    #pragma acc enter data create(arrs[0:9])

    #pragma acc update device(arrs[0:9])

    #pragma acc exit data delete(arrs)
}
```

p_main.c:
```
extern void m_mod_init();

int main() {
    m_mod_init(); 
}
```

Reply via email to