diff options
author | Diego Novillo <dnovillo@google.com> | 2012-09-10 20:04:13 -0400 |
---|---|---|
committer | Diego Novillo <dnovillo@gcc.gnu.org> | 2012-09-10 20:04:13 -0400 |
commit | f32682ca2516e009432be7f0dc0e4e4bfab9a944 (patch) | |
tree | 3030f0ec079f1a93f960208e432eb6f275d10a28 /gcc/tree-sra.c | |
parent | da4c5b2465322894e6d53cd14128ba21d0ff911b (diff) | |
download | gcc-f32682ca2516e009432be7f0dc0e4e4bfab9a944.zip gcc-f32682ca2516e009432be7f0dc0e4e4bfab9a944.tar.gz gcc-f32682ca2516e009432be7f0dc0e4e4bfab9a944.tar.bz2 |
Remove unnecessary VEC function overloads.
Several VEC member functions that accept an element 'T' used to have
two overloads: one taking 'T', the second taking 'T *'.
This used to be needed because of the interface dichotomy between
vectors of objects and vectors of pointers. In the past, vectors of
pointers would use pass-by-value semantics, but vectors of objects
would use pass-by-reference semantics. This is no longer necessary,
but the distinction had remained.
The main side-effect of this change is some code reduction in code
that manipulates vectors of objects. For instance,
- struct iterator_use *iuse;
-
- iuse = VEC_safe_push (iterator_use, heap, iterator_uses, NULL);
- iuse->iterator = iterator;
- iuse->ptr = ptr;
+ struct iterator_use iuse = {iterator, ptr};
+ VEC_safe_push (iterator_use, heap, iterator_uses, iuse);
Compile time performance was not affected.
Tested on x86_64 and ppc64.
Also built all-gcc on all targets using VEC routines: arm, bfin, c6x,
epiphany, ia64, mips, sh, spu, and vms.
2012-09-10 Diego Novillo <dnovillo@google.com>
* vec.h (vec_t::quick_push): Remove overload that accepts 'T *'.
Update all users.
(vec_t::safe_push): Likewise.
(vec_t::quick_insert): Likewise.
(vec_t::lower_bound): Likewise.
(vec_t::safe_insert): Likewise.
(vec_t::replace): Change second argument to 'T &'.
From-SVN: r191165
Diffstat (limited to 'gcc/tree-sra.c')
-rw-r--r-- | gcc/tree-sra.c | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index aafaa15..ef3f5f9 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -3999,7 +3999,7 @@ splice_all_param_accesses (VEC (access_p, heap) **representatives) result = UNUSED_PARAMS; } else - VEC_quick_push (access_p, *representatives, (access_p) NULL); + VEC_quick_push (access_p, *representatives, NULL); } if (result == NO_GOOD_ACCESS) @@ -4050,36 +4050,35 @@ turn_representatives_into_adjustments (VEC (access_p, heap) *representatives, if (!repr || no_accesses_p (repr)) { - struct ipa_parm_adjustment *adj; + struct ipa_parm_adjustment adj; - adj = VEC_quick_push (ipa_parm_adjustment_t, adjustments, NULL); - memset (adj, 0, sizeof (*adj)); - adj->base_index = get_param_index (parm, parms); - adj->base = parm; + memset (&adj, 0, sizeof (adj)); + adj.base_index = get_param_index (parm, parms); + adj.base = parm; if (!repr) - adj->copy_param = 1; + adj.copy_param = 1; else - adj->remove_param = 1; + adj.remove_param = 1; + VEC_quick_push (ipa_parm_adjustment_t, adjustments, adj); } else { - struct ipa_parm_adjustment *adj; + struct ipa_parm_adjustment adj; int index = get_param_index (parm, parms); for (; repr; repr = repr->next_grp) { - adj = VEC_quick_push (ipa_parm_adjustment_t, adjustments, NULL); - memset (adj, 0, sizeof (*adj)); + memset (&adj, 0, sizeof (adj)); gcc_assert (repr->base == parm); - adj->base_index = index; - adj->base = repr->base; - adj->type = repr->type; - adj->alias_ptr_type = reference_alias_ptr_type (repr->expr); - adj->offset = repr->offset; - adj->by_ref = (POINTER_TYPE_P (TREE_TYPE (repr->base)) - && (repr->grp_maybe_modified - || repr->grp_not_necessarilly_dereferenced)); - + adj.base_index = index; + adj.base = repr->base; + adj.type = repr->type; + adj.alias_ptr_type = reference_alias_ptr_type (repr->expr); + adj.offset = repr->offset; + adj.by_ref = (POINTER_TYPE_P (TREE_TYPE (repr->base)) + && (repr->grp_maybe_modified + || repr->grp_not_necessarilly_dereferenced)); + VEC_quick_push (ipa_parm_adjustment_t, adjustments, adj); } } } |