From 2405e0ea00fea38ed86fade3d10fb728ba1ff0f6 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Mon, 15 Dec 2014 19:43:26 +0100 Subject: [PATCH] re PR libgcc/63832 (crtstuff.c:400:19: warning: array subscript is above array bounds [-Warray-bounds]) PR libgcc/63832 * crtstuff.c (__do_global_dtors_aux) [HIDDEN_DTOR_LIST_END]: Use func_ptr *dtor_list temporary variable to avoid "array subscript is above array bounds" warnings. From-SVN: r218759 --- libgcc/ChangeLog | 9 ++++++++- libgcc/crtstuff.c | 8 +++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 285832aa038..0ce1a7ad15d 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,10 @@ +2014-12-15 Uros Bizjak + + PR libgcc/63832 + * crtstuff.c (__do_global_dtors_aux) [HIDDEN_DTOR_LIST_END]: Use + func_ptr *dtor_list temporary variable to avoid "array subscript + is above array bounds" warnings. + 2014-12-09 Michael Haubenwallner * Makefile.in (with_aix_soname): Define. @@ -809,7 +816,7 @@ PR libgcc/60472 * crtstuff.c (frame_dummy): Use void **jcr_list temporary - variable to avoid array subscript is above array bounds warnings. + variable to avoid "array subscript is above array bounds" warnings. Use __builtin_expect when checking *jcr_list for NULL. 2014-03-06 Rainer Orth diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c index 62a4b42276c..0432794b60e 100644 --- a/libgcc/crtstuff.c +++ b/libgcc/crtstuff.c @@ -393,13 +393,11 @@ __do_global_dtors_aux (void) extern func_ptr __DTOR_END__[] __attribute__((visibility ("hidden"))); static size_t dtor_idx; const size_t max_idx = __DTOR_END__ - __DTOR_LIST__ - 1; - func_ptr f; + func_ptr *dtor_list; + __asm ("" : "=g" (dtor_list) : "0" (__DTOR_LIST__)); while (dtor_idx < max_idx) - { - f = __DTOR_LIST__[++dtor_idx]; - f (); - } + dtor_list[++dtor_idx] (); } #else /* !defined (FINI_ARRAY_SECTION_ASM_OP) */ { -- 2.30.2