Hi, sadly this patch seems to trigger false positive ../../gcc/vec.h:311:10: error: attempt to free a non-heap object �@Xa�@Y [-Werror=free-nonheap-object]
which is about vec destructor freeing heap allocated memory if the vector was ever resized from hits stack allocated place. In this case it never is. I am testing the following workaround which turns it into simple array (only benefit of auto_vec here is the bounds check that I implemented by hand). I will commit it once x86_64-linux boostrap finishes unless someone comes with better alternative. Sorry for this - it did not show up with LTO build for me. Honza * fibonacci_heap.h (fibonacci_heap<K,V>::consolidate): Turn auto_vec to ordinary array. Index: fibonacci_heap.h =================================================================== --- fibonacci_heap.h (revision 278501) +++ fibonacci_heap.h (working copy) @@ -648,17 +648,18 @@ template<class K, class V> void fibonacci_heap<K,V>::consolidate () { const int D = 1 + 8 * sizeof (long); - auto_vec<fibonacci_node<K,V> *, D> a; + fibonacci_node<K,V> *a[D]; fibonacci_node<K,V> *w, *x, *y; int i, d; - a.quick_grow_cleared (D); + memset (a, 0, sizeof (a)); while ((w = m_root) != NULL) { x = w; remove_root (w); d = x->m_degree; + gcc_checking_assert (d < D); while (a[d] != NULL) { y = a[d];