On Wed, Sep 21, 2016 at 01:55:33PM -0600, Martin Sebor wrote: > On 09/21/2016 01:40 PM, Gerald Pfeifer wrote: > >I noticed the following bootstrap failure on i?86-unknown-freebsd > >that started in the last 24 hours: > > > >/scratch/tmp/gerald/gcc-HEAD/gcc/vec.c: In member function ‘void > >vec_usage::dump(mem_location*, mem_usage&) const’: > >/scratch/tmp/gerald/gcc-HEAD/gcc/vec.c:79:3: error: ‘%s’ directive writing > >between 0 and 4294967295 bytes into a region of size 4096 > >[-Werror=format-length=] > > dump (mem_location *loc, mem_usage &total) const > > ^~~~ > >/scratch/tmp/gerald/gcc-HEAD/gcc/vec.c:83:36: note: format output between 6 > >and4294967311 bytes into a destination of size 4096 > > loc->m_line, loc->m_function); > > ^ > >cc1plus: all warnings being treated as errors > >gmake[3]: *** [Makefile:2557: build/vec.o] Error 1 > >gmake[3]: Leaving directory '/scratch/tmp/gerald/OBJ-0921-1705/gcc' > >gmake[2]: *** [Makefile:4612: all-stage2-gcc] Error 2 > >gmake[2]: Leaving directory '/scratch/tmp/gerald/OBJ-0921-1705' > >gmake[1]: *** [Makefile:24365: stage2-bubble] Error 2 > > > >Is it possible that is related to your warning patches? > > Yes, this is likely the same bug as mentioned in comment #6 on > pr77676. The bug in the comment ILP32-specific and only tangentially > related to the PR itself. I'm testing the patch that's attached to > the PR that should fix both of these problems. I don't have access > to i?86-unknown-freebsd so if you could help validate it there I'd > be grateful. (The patch just successfully bootstrapped on > i386-pc-linux-gnu.)
Looking at target_int_max you are using in the new patch: static unsigned HOST_WIDE_INT target_int_max () { static const unsigned HOST_WIDE_INT int_max = HOST_WIDE_INT_M1U >> (sizeof int_max * CHAR_BIT - TYPE_PRECISION (integer_type_node) + 1); return int_max; } 1) sizeof int_max * CHAR_BIT should IMNSHO be HOST_BITS_PER_WIDE_INT 2) why is the var static, subtraction and shift is very cheap, while C++ local statics are expensive? It needs a guard variable, __cxa_guard_acquire, __cxa_guard_release calls, etc. Jakub