diff options
author | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-03-10 18:31:20 +0000 |
---|---|---|
committer | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-03-10 18:31:20 +0000 |
commit | e5d692d7796af543fe6d931832cc91064a7d4f9d (patch) | |
tree | 90f1b9e9325b3b0a1324bcdba5c53610fabfd936 /libgcc | |
parent | b919371fd3f46fb6c50020febfe7b68ec122bb5b (diff) | |
download | ppe42-gcc-e5d692d7796af543fe6d931832cc91064a7d4f9d.tar.gz ppe42-gcc-e5d692d7796af543fe6d931832cc91064a7d4f9d.zip |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@208457 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgcc')
-rw-r--r-- | libgcc/ChangeLog | 9 | ||||
-rw-r--r-- | libgcc/crtstuff.c | 12 |
2 files changed, 16 insertions, 5 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 381a5e27c66..686c29e8023 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -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 @@ -420,7 +427,7 @@ 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. diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c index bc0398d9a56..12bed4b351d 100644 --- a/libgcc/crtstuff.c +++ b/libgcc/crtstuff.c @@ -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 |