From 326280d4224f98eb473de20cd9b438467da93905 Mon Sep 17 00:00:00 2001 From: Diego Novillo Date: Tue, 4 Sep 2012 14:33:29 -0400 Subject: [PATCH] This patch works around a parsing problem with g++ 4.3. This patch works around a parsing problem with g++ 4.3. The parser is failing to lookup calls to the template function reserve when called from other member functions: vec_t::reserve (...) The parser thinks that the '<' in reserve is a less-than operation. This problem does not happen after 4.3. This code is going to change significantly, so this won't be needed soon. Tested on x86_64 with g++ 4.3 and g++ 4.6. PR bootstrap/54478 * vec.h (vec_t::alloc): Remove explicit type specification in call to reserve. (vec_t::copy): Likewise. (vec_t::reserve): Likewise. (vec_t::reserve_exact): Likewise. (vec_t::safe_splice): Likewise. (vec_t::safe_push): Likewise. (vec_t::safe_grow): Likewise. (vec_t::safe_grow_cleared): Likewise. (vec_t::safe_insert): Likewise. From-SVN: r190943 --- gcc/ChangeLog | 14 ++++++++++++++ gcc/vec.h | 27 +++++++++++++-------------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 11bbf7eb871..bbcf050751c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2012-09-04 Diego Novillo + + PR bootstrap/54478 + * vec.h (vec_t::alloc): Remove explicit type specification + in call to reserve. + (vec_t::copy): Likewise. + (vec_t::reserve): Likewise. + (vec_t::reserve_exact): Likewise. + (vec_t::safe_splice): Likewise. + (vec_t::safe_push): Likewise. + (vec_t::safe_grow): Likewise. + (vec_t::safe_grow_cleared): Likewise. + (vec_t::safe_insert): Likewise. + 2012-09-04 Richard Henderson * alias.c (read_dependence): Return true for ALIAS_SET_MEMORY_BARRIER. diff --git a/gcc/vec.h b/gcc/vec.h index ac426e9a417..c0f1bb2cd21 100644 --- a/gcc/vec.h +++ b/gcc/vec.h @@ -655,7 +655,7 @@ template vec_t * vec_t::alloc (int nelems MEM_STAT_DECL) { - return vec_t::reserve_exact ((vec_t *) NULL, nelems PASS_MEM_STAT); + return reserve_exact ((vec_t *) NULL, nelems PASS_MEM_STAT); } template @@ -699,8 +699,8 @@ vec_t::copy (ALONE_MEM_STAT_DECL) if (len) { - new_vec = vec_t::reserve_exact (static_cast *> (NULL), - len PASS_MEM_STAT); + new_vec = reserve_exact (static_cast *> (NULL), + len PASS_MEM_STAT); new_vec->embedded_init (len, len); memcpy (new_vec->address (), vec_, sizeof (T) * len); } @@ -736,7 +736,7 @@ vec_t::reserve (vec_t **vec, int nelems VEC_CHECK_DECL MEM_STAT_DECL) bool extend = (*vec) ? !(*vec)->space (nelems VEC_CHECK_PASS) : nelems != 0; if (extend) - *vec = vec_t::reserve (*vec, nelems PASS_MEM_STAT); + *vec = reserve (*vec, nelems PASS_MEM_STAT); return extend; } @@ -755,7 +755,7 @@ vec_t::reserve_exact (vec_t **vec, int nelems VEC_CHECK_DECL bool extend = (*vec) ? !(*vec)->space (nelems VEC_CHECK_PASS) : nelems != 0; if (extend) - *vec = vec_t::reserve_exact (*vec, nelems PASS_MEM_STAT); + *vec = reserve_exact (*vec, nelems PASS_MEM_STAT); return extend; } @@ -796,8 +796,7 @@ vec_t::safe_splice (vec_t **dst, vec_t *src VEC_CHECK_DECL { if (src) { - vec_t::reserve_exact (dst, VEC_length (T, src) VEC_CHECK_PASS - MEM_STAT_INFO); + reserve_exact (dst, VEC_length (T, src) VEC_CHECK_PASS MEM_STAT_INFO); (*dst)->splice (src VEC_CHECK_PASS); } } @@ -843,7 +842,7 @@ template T & vec_t::safe_push (vec_t **vec, T obj VEC_CHECK_DECL MEM_STAT_DECL) { - vec_t::reserve (vec, 1 VEC_CHECK_PASS PASS_MEM_STAT); + reserve (vec, 1 VEC_CHECK_PASS PASS_MEM_STAT); return (*vec)->quick_push (obj VEC_CHECK_PASS); } @@ -858,7 +857,7 @@ template T * vec_t::safe_push (vec_t **vec, const T *ptr VEC_CHECK_DECL MEM_STAT_DECL) { - vec_t::reserve (vec, 1 VEC_CHECK_PASS PASS_MEM_STAT); + reserve (vec, 1 VEC_CHECK_PASS PASS_MEM_STAT); return (*vec)->quick_push (ptr VEC_CHECK_PASS); } @@ -898,8 +897,8 @@ vec_t::safe_grow (vec_t **vec, int size VEC_CHECK_DECL MEM_STAT_DECL) { VEC_ASSERT (size >= 0 && VEC_length (T, *vec) <= (unsigned)size, "grow", T, A); - vec_t::reserve_exact (vec, size - (int)VEC_length (T, *vec) - VEC_CHECK_PASS PASS_MEM_STAT); + reserve_exact (vec, size - (int)VEC_length (T, *vec) + VEC_CHECK_PASS PASS_MEM_STAT); (*vec)->prefix_.num_ = size; } @@ -915,7 +914,7 @@ vec_t::safe_grow_cleared (vec_t **vec, int size VEC_CHECK_DECL MEM_STAT_DECL) { int oldsize = VEC_length (T, *vec); - vec_t::safe_grow (vec, size VEC_CHECK_PASS PASS_MEM_STAT); + safe_grow (vec, size VEC_CHECK_PASS PASS_MEM_STAT); memset (&((*vec)->address ()[oldsize]), 0, sizeof (T) * (size - oldsize)); } @@ -972,7 +971,7 @@ void vec_t::safe_insert (vec_t **vec, unsigned ix, T obj VEC_CHECK_DECL MEM_STAT_DECL) { - vec_t::reserve (vec, 1 VEC_CHECK_PASS PASS_MEM_STAT); + reserve (vec, 1 VEC_CHECK_PASS PASS_MEM_STAT); (*vec)->quick_insert (ix, obj VEC_CHECK_PASS); } @@ -988,7 +987,7 @@ void vec_t::safe_insert (vec_t **vec, unsigned ix, T *ptr VEC_CHECK_DECL MEM_STAT_DECL) { - vec_t::reserve (vec, 1 VEC_CHECK_PASS PASS_MEM_STAT); + reserve (vec, 1 VEC_CHECK_PASS PASS_MEM_STAT); (*vec)->quick_insert (ix, ptr VEC_CHECK_PASS); } -- 2.11.4.GIT