From 9f2bc5077debef2b046b6c10d38591ac324ad8b5 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Fri, 16 Jul 2021 19:12:02 +0200 Subject: =?UTF-8?q?[gcn]=20Work-around=20libgomp=20'error:=20array=20subsc?= =?UTF-8?q?ript=200=20is=20outside=20array=20bounds=20of=20=E2=80=98=5F=5F?= =?UTF-8?q?lds=20struct=20gomp=5Fthread=20*=20=5F=5Flds[0]=E2=80=99=20[-We?= =?UTF-8?q?rror=3Darray-bounds]'=20[PR101484]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ... seen as of commit a110855667782dac7b674d3e328b253b3b3c919b "Correct handling of variable offset minus constant in -Warray-bounds [PR100137]". Awaiting a different solution, of course. libgomp/ PR target/101484 * config/gcn/team.c: Apply '-Werror=array-bounds' work-around. * libgomp.h [__AMDGCN__]: Likewise. --- libgomp/libgomp.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'libgomp/libgomp.h') diff --git a/libgomp/libgomp.h b/libgomp/libgomp.h index 8d25dc8..4159cbe 100644 --- a/libgomp/libgomp.h +++ b/libgomp/libgomp.h @@ -128,7 +128,10 @@ team_malloc (size_t size) : "=v"(result) : "v"(TEAM_ARENA_FREE), "v"(size), "e"(1L) : "memory"); /* Handle OOM. */ +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Warray-bounds" /*TODO PR101484 */ if (result + size > *(void * __lds *)TEAM_ARENA_END) +# pragma GCC diagnostic pop { /* While this is experimental, let's make sure we know when OOM happens. */ @@ -159,8 +162,11 @@ team_free (void *ptr) However, if we fell back to using heap then we should free it. It would be better if this function could be a no-op, but at least LDS loads are cheap. */ +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Warray-bounds" /*TODO PR101484 */ if (ptr < *(void * __lds *)TEAM_ARENA_START || ptr >= *(void * __lds *)TEAM_ARENA_END) +# pragma GCC diagnostic pop free (ptr); } #else @@ -789,13 +795,19 @@ static inline struct gomp_thread *gcn_thrs (void) { /* The value is at the bottom of LDS. */ struct gomp_thread * __lds *thrs = (struct gomp_thread * __lds *)4; +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Warray-bounds" /*TODO PR101484 */ return *thrs; +# pragma GCC diagnostic pop } static inline void set_gcn_thrs (struct gomp_thread *val) { /* The value is at the bottom of LDS. */ struct gomp_thread * __lds *thrs = (struct gomp_thread * __lds *)4; +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Warray-bounds" /*TODO PR101484 */ *thrs = val; +# pragma GCC diagnostic pop } static inline struct gomp_thread *gomp_thread (void) { -- cgit v1.1