X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fvec.c;h=c1d003492e3c2d802ba6713f7fdb3c463e8e8a87;hb=0a9ca5de5663f6e84b301bd4b08f6590de0c8c5d;hp=5b3b9a01feaa6fa9b69ba5de2d718f5c4ef6480d;hpb=0b205f4ca112a643f4f1b9c9886648b569e0b380;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/vec.c b/gcc/vec.c index 5b3b9a01fea..c1d003492e3 100644 --- a/gcc/vec.c +++ b/gcc/vec.c @@ -1,5 +1,6 @@ /* Vector API for GNU compiler. - Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010 + Free Software Foundation, Inc. Contributed by Nathan Sidwell This file is part of GCC. @@ -27,20 +28,12 @@ along with GCC; see the file COPYING3. If not see #endif #include "system.h" +#include "coretypes.h" #include "ggc.h" #include "vec.h" -#include "coretypes.h" #include "diagnostic-core.h" #include "hashtab.h" -struct vec_prefix -{ - unsigned num; - unsigned alloc; - void *vec[1]; -}; - - #ifdef GATHER_STATISTICS /* Store information about each particular vector. */ @@ -253,7 +246,7 @@ void * vec_gc_p_reserve (void *vec, int reserve MEM_STAT_DECL) { return vec_gc_o_reserve_1 (vec, reserve, - offsetof (struct vec_prefix, vec), + sizeof (struct vec_prefix), sizeof (void *), false PASS_MEM_STAT); } @@ -267,7 +260,7 @@ void * vec_gc_p_reserve_exact (void *vec, int reserve MEM_STAT_DECL) { return vec_gc_o_reserve_1 (vec, reserve, - offsetof (struct vec_prefix, vec), + sizeof (struct vec_prefix), sizeof (void *), true PASS_MEM_STAT); } @@ -336,7 +329,7 @@ void * vec_heap_p_reserve (void *vec, int reserve MEM_STAT_DECL) { return vec_heap_o_reserve_1 (vec, reserve, - offsetof (struct vec_prefix, vec), + sizeof (struct vec_prefix), sizeof (void *), false PASS_MEM_STAT); } @@ -347,7 +340,7 @@ void * vec_heap_p_reserve_exact (void *vec, int reserve MEM_STAT_DECL) { return vec_heap_o_reserve_1 (vec, reserve, - offsetof (struct vec_prefix, vec), + sizeof (struct vec_prefix), sizeof (void *), true PASS_MEM_STAT); } @@ -442,8 +435,8 @@ vec_stack_o_reserve_1 (void *vec, int reserve, size_t vec_offset, if (newvec && vec) { ((struct vec_prefix *) newvec)->num = ((struct vec_prefix *) vec)->num; - memcpy (((struct vec_prefix *) newvec)->vec, - ((struct vec_prefix *) vec)->vec, + memcpy (((struct vec_prefix *) newvec)+1, + ((struct vec_prefix *) vec)+1, ((struct vec_prefix *) vec)->num * elt_size); } return newvec; @@ -455,7 +448,7 @@ void * vec_stack_p_reserve (void *vec, int reserve MEM_STAT_DECL) { return vec_stack_o_reserve_1 (vec, reserve, - offsetof (struct vec_prefix, vec), + sizeof (struct vec_prefix), sizeof (void *), false PASS_MEM_STAT); } @@ -466,7 +459,7 @@ void * vec_stack_p_reserve_exact (void *vec, int reserve MEM_STAT_DECL) { return vec_stack_o_reserve_1 (vec, reserve, - offsetof (struct vec_prefix, vec), + sizeof (struct vec_prefix), sizeof (void *), true PASS_MEM_STAT); }