https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105421
--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-12 branch has been updated by Thomas Schwinge <tschwi...@gcc.gnu.org>: https://gcc.gnu.org/g:dd2fdf114b59db1b0bfb0de497fc3ab11f034d89 commit r12-8856-gdd2fdf114b59db1b0bfb0de497fc3ab11f034d89 Author: Julian Brown <jul...@codesourcery.com> Date: Fri Oct 14 11:06:07 2022 +0000 amdgcn: Use FLAT addressing for all functions with pointer arguments [PR105421] The GCN backend uses a heuristic to determine whether to use FLAT or GLOBAL addressing in a particular (offload) function: namely, if a function takes a pointer-to-scalar parameter, it is assumed that the pointer may refer to "flat scratch" space, and thus FLAT addressing must be used instead of GLOBAL. I came up with this heuristic initially whilst working on support for moving OpenACC gang-private variables into local-data share (scratch) memory. The assumption that only scalar variables would be transformed in that way turned out to be wrong. For example, prior to the next patch in the series, Fortran compiler-generated temporary structures were treated as gang private and moved to LDS space, typically overflowing the region allocated for such variables. That will no longer happen after that patch is applied, but there may be other cases of structs moving to LDS space now or in the future that this patch may be needed for. 2022-10-14 Julian Brown <jul...@codesourcery.com> PR target/105421 gcc/ * config/gcn/gcn.cc (gcn_detect_incoming_pointer_arg): Any pointer argument forces FLAT addressing mode, not just pointer-to-non-aggregate. (cherry picked from commit 7c55755d4c760de326809636531478fd7419e1e5)