On Tue, 11 Jun 2019, Jakub Jelinek wrote: > On Fri, Jun 07, 2019 at 09:07:39AM +0200, Martin Liška wrote: > > 2019-06-07 Martin Liska <mli...@suse.cz> > > > > * ansidecl.h: > > (ATTRIBUTE_RESULT_SIZE_1): Define new macro. > > (ATTRIBUTE_RESULT_SIZE_2): Likewise. > > (ATTRIBUTE_RESULT_SIZE_1_2): Likewise. > > * libiberty.h (xmalloc): Add RESULT_SIZE attribute. > > (xrealloc): Likewise. > > (xcalloc): Likewise. > > This change broke i686-linux bootstrap, we get: > error: argument 1 value '4294967292' exceeds maximum object size 2147483647 > [-Werror=alloc-size-larger-than=] > error, false positive warning. > Because blocks.length () is > unsigned length (void) const > { return m_vec ? m_vec->length () : 0; } > we decide to jump-thread that and think the 0 value is somehow special and > the warning decides to warn, but the fact is that we don't really know > anything about it (and for such case don't warn). > > The caller actually guarantees that blocks.length () is > 0 as it pushes one > basic block to the vector unconditionally, so we can work around this > warning by adding an assertion. Not entirely happy about that, on the other > side nobody uses trans-mem and so the extra comparison and cold check > isn't that big a deal. > > Bootstrapped/regtested on i686-linux, ok for trunk?
OK. Richard. > 2019-06-10 Jakub Jelinek <ja...@redhat.com> > > PR bootstrap/90819 > * trans-mem.c (tm_memopt_compute_available): Add assertion > that blocks is not empty. Formatting fix. > > --- gcc/trans-mem.c.jj 2019-05-20 21:59:20.081717030 +0200 > +++ gcc/trans-mem.c 2019-06-10 23:34:31.725056038 +0200 > @@ -3708,9 +3708,9 @@ tm_memopt_compute_available (struct tm_r > /* Allocate a worklist array/queue. Entries are only added to the > list if they were not already on the list. So the size is > bounded by the number of basic blocks in the region. */ > + gcc_assert (!blocks.is_empty ()); > qlen = blocks.length () - 1; > - qin = qout = worklist = > - XNEWVEC (basic_block, qlen); > + qin = qout = worklist = XNEWVEC (basic_block, qlen); > > /* Put every block in the region on the worklist. */ > for (i = 0; blocks.iterate (i, &bb); ++i) > > > Jakub > -- Richard Biener <rguent...@suse.de> SUSE Linux GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany; GF: Felix Imendörffer, Mary Higgins, Sri Rasiah; HRB 21284 (AG Nürnberg)