OSDN Git Service

* trans.h (struct gfc_ss, struct gfc_ss_info): Move member struct
[pf3gnuchains/gcc-fork.git] / gcc / vec.c
index 5b3b9a0..c1d0034 100644 (file)
--- 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 <nathan@codesourcery.com>
 
 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);
 }