diff --git a/libgomp/config/gcn/team.c b/libgomp/config/gcn/team.c index 94ce2f2dfeb..627210ea407 100644 --- a/libgomp/config/gcn/team.c +++ b/libgomp/config/gcn/team.c @@ -65,12 +65,9 @@ gomp_gcn_enter_kernel (void) void * __lds *arena_start = (void * __lds *)TEAM_ARENA_START; void * __lds *arena_free = (void * __lds *)TEAM_ARENA_FREE; void * __lds *arena_end = (void * __lds *)TEAM_ARENA_END; -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Warray-bounds" /*TODO PR101484 */ *arena_start = team_arena; *arena_free = team_arena; *arena_end = team_arena + TEAM_ARENA_SIZE; -# pragma GCC diagnostic pop /* Allocate and initialize the team-local-storage data. */ struct gomp_thread *thrs = team_malloc_cleared (sizeof (*thrs) diff --git a/libgomp/configure.tgt b/libgomp/configure.tgt index fe2bf1dac51..d4f1e741b5a 100644 --- a/libgomp/configure.tgt +++ b/libgomp/configure.tgt @@ -173,6 +173,9 @@ case "${target}" in amdgcn*-*-*) config_path="gcn accel" + + #TODO PR101484 + XCFLAGS="$XCFLAGS -Wno-error=array-bounds" ;; *) diff --git a/libgomp/libgomp.h b/libgomp/libgomp.h index 4159cbe3334..8d25dc8e2a8 100644 --- a/libgomp/libgomp.h +++ b/libgomp/libgomp.h @@ -128,10 +128,7 @@ 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. */ @@ -162,11 +159,8 @@ 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 @@ -795,19 +789,13 @@ 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) {