Message ID | CAFULd4YJqWYkEJjhE0aQOGHzAV496j44qkqy6wtDBvzoXGWLiQ@mail.gmail.com |
---|---|
State | New |
Headers | show |
On Mon, Mar 10, 2014 at 10:42 AM, Uros Bizjak <ubizjak@gmail.com> wrote: > > Attached patch is what I plan to commit to mainline soon. Ian, does it > look OK to you? > > 2014-03-10 Uros Bizjak <ubizjak@gmail.com> > > * 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. This looks OK to me. Thanks. > Jakub, is it OK for mainline from RMs POV? Shall we backport this > patch to other release branches? I gather that the purpose of this patch is to avoid a warning. I don't see a reason to backport this to working release branches. Ian
On Mon, Mar 10, 2014 at 10:53:27AM -0700, Ian Lance Taylor wrote: > On Mon, Mar 10, 2014 at 10:42 AM, Uros Bizjak <ubizjak@gmail.com> wrote: > > > > Attached patch is what I plan to commit to mainline soon. Ian, does it > > look OK to you? > > > > 2014-03-10 Uros Bizjak <ubizjak@gmail.com> > > > > * 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. > > This looks OK to me. Thanks. > > > Jakub, is it OK for mainline from RMs POV? Shall we backport this > > patch to other release branches? > > I gather that the purpose of this patch is to avoid a warning. I > don't see a reason to backport this to working release branches. Yeah. Unless we are aware of miscompilation on some target, I think it shouldn't be backported. Jakub
Index: crtstuff.c =================================================================== --- crtstuff.c (revision 208448) +++ crtstuff.c (working copy) @@ -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