re PR libgcc/63832 (crtstuff.c:400:19: warning: array subscript is above array bounds...
authorUros Bizjak <ubizjak@gmail.com>
Mon, 15 Dec 2014 18:43:26 +0000 (19:43 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Mon, 15 Dec 2014 18:43:26 +0000 (19:43 +0100)
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
libgcc/crtstuff.c

index 285832aa0388db3c464ae03748b0f99042f42e6f..0ce1a7ad15d9c0bdf41fd0c3e5f2371bb296bbc1 100644 (file)
@@ -1,3 +1,10 @@
+2014-12-15  Uros Bizjak  <ubizjak@gmail.com>
+
+       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 <michael.haubenwallner@ssi-schaefer.com>
 
        * Makefile.in (with_aix_soname): Define.
 
        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  <ro@CeBiTec.Uni-Bielefeld.DE>
index 62a4b42276c139e9e7253011ce95f66c5b14a32a..0432794b60ef40166747b350bd5f07ade7d2c4a8 100644 (file)
@@ -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) */
   {