I've applied this patch to gomp-4_0-branch which fixes of problems involving reference type variables in openacc data clauses. The first problem was, the c++ front end was incorrectly handling reference types in general in openacc. Instead of mapping the variable, it would map the pointer to the variable by itself. The second problem was, if the gimplifier saw a pointer mapping for a data clause, it would propagate it to omp-lower. That's bad because if you have something like this
int &var = ... #pragma acc data copy (var) { ...var... } where the var inside the data region would have some uninitialized value because omplower installs a new variable for it. The gimpifier is already handling openmp target data regions properly, so this patch extends it to ignore pointer mappings in acc enter/exit and data constructs. Ultimately this patch will need to go in trunk, but the c++ changes don't apply cleanly. I'll need to work on that later. Cesar