PR libgcc/60472
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 10 Mar 2014 18:31:20 +0000 (18:31 +0000)
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 10 Mar 2014 18:31:20 +0000 (18:31 +0000)
* crtstuff.c (frame_dummy): Use void **jcr_list temporary
variable to avoid array subscript is above array bounds warnings.
Use __builtin_expect when checking *jcr_list for NULL.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@208457 138bc75d-0d04-0410-961f-82ee72b054a4

libgcc/ChangeLog
libgcc/crtstuff.c

index 381a5e2..686c29e 100644 (file)
@@ -1,3 +1,10 @@
+2014-03-10  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR libgcc/60472
+       * crtstuff.c (frame_dummy): Use void **jcr_list temporary
+       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>
 
        PR libgcc/59339
 
 2013-12-26  Ganesh Gopalasubramanian  <Ganesh.Gopalasubramanian@amd.com>
 
-        * config/i386/cpuinfo.c (processor_types): Rename AMD cpu names
+       * config/i386/cpuinfo.c (processor_types): Rename AMD cpu names
        AMD_BOBCAT to AMD_BTVER1 and AMD_JAGUAR to AMD_BTVER2.
        (get_amd_cpu): Likewise.
 
index bc0398d..12bed4b 100644 (file)
@@ -460,12 +460,14 @@ frame_dummy (void)
 #endif /* USE_EH_FRAME_REGISTRY */
 
 #ifdef JCR_SECTION_NAME
-  if (__JCR_LIST__[0])
+  void **jcr_list;
+  __asm ("" : "=g" (jcr_list) : "0" (__JCR_LIST__));
+  if (__builtin_expect (*jcr_list != NULL, 0))
     {
       void (*register_classes) (void *) = _Jv_RegisterClasses;
       __asm ("" : "+r" (register_classes));
       if (register_classes)
-       register_classes (__JCR_LIST__);
+       register_classes (jcr_list);
     }
 #endif /* JCR_SECTION_NAME */
 
@@ -565,12 +567,14 @@ __do_global_ctors_1(void)
 #endif
 
 #ifdef JCR_SECTION_NAME
-  if (__JCR_LIST__[0])
+  void **jcr_list
+  __asm ("" : "=g" (jcr_list) : "0" (__JCR_LIST__));
+  if (__builtin_expect (*jcr_list != NULL, 0))
     {
       void (*register_classes) (void *) = _Jv_RegisterClasses;
       __asm ("" : "+r" (register_classes));
       if (register_classes)
-       register_classes (__JCR_LIST__);
+       register_classes (jcr_list);
     }
 #endif