merge from gcc
This commit is contained in:
parent
5ec9ea21a3
commit
a3f95116e3
|
@ -1,3 +1,18 @@
|
||||||
|
2003-10-22 Joseph S. Myers <jsm@polyomino.org.uk>
|
||||||
|
|
||||||
|
* obstack.h: Merge the following change from gnulib:
|
||||||
|
2003-10-21 Paul Eggert <eggert@twinsun.com>
|
||||||
|
* obstack.h (obstack_1grow_fast): Properly parenthesize arg.
|
||||||
|
(obstack_ptr_grow_fast, obstack_int_grow_fast):
|
||||||
|
Don't use lvalue casts, as GCC plans to remove support for them
|
||||||
|
in GCC 3.5. Reported by Joseph S. Myers. This bug
|
||||||
|
was also present in the non-GCC version, indicating that this
|
||||||
|
code had always been buggy and had never been widely used.
|
||||||
|
(obstack_1grow, obstack_ptr_grow, obstack_int_grow, obstack_blank):
|
||||||
|
Use the fast variant of each macro, rather than copying the
|
||||||
|
definiens of the fast variant; that way, we'll be more likely to
|
||||||
|
catch future bugs in the fast variants.
|
||||||
|
|
||||||
2003-10-22 Jakub Jelinek <jakub@redhat.com>
|
2003-10-22 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
* bfdlink.h (struct bfd_elf_version_expr): Remove match field.
|
* bfdlink.h (struct bfd_elf_version_expr): Remove match field.
|
||||||
|
|
|
@ -343,7 +343,7 @@ extern int obstack_exit_failure;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define obstack_1grow_fast(h,achar) (*((h)->next_free)++ = achar)
|
#define obstack_1grow_fast(h,achar) (*((h)->next_free)++ = (achar))
|
||||||
|
|
||||||
#define obstack_blank_fast(h,n) ((h)->next_free += (n))
|
#define obstack_blank_fast(h,n) ((h)->next_free += (n))
|
||||||
|
|
||||||
|
@ -411,7 +411,7 @@ __extension__ \
|
||||||
({ struct obstack *__o = (OBSTACK); \
|
({ struct obstack *__o = (OBSTACK); \
|
||||||
if (__o->next_free + 1 > __o->chunk_limit) \
|
if (__o->next_free + 1 > __o->chunk_limit) \
|
||||||
_obstack_newchunk (__o, 1); \
|
_obstack_newchunk (__o, 1); \
|
||||||
*(__o->next_free)++ = (datum); \
|
obstack_1grow_fast (__o, datum); \
|
||||||
(void) 0; })
|
(void) 0; })
|
||||||
|
|
||||||
/* These assume that the obstack alignment is good enough for pointers or ints,
|
/* These assume that the obstack alignment is good enough for pointers or ints,
|
||||||
|
@ -423,19 +423,28 @@ __extension__ \
|
||||||
({ struct obstack *__o = (OBSTACK); \
|
({ struct obstack *__o = (OBSTACK); \
|
||||||
if (__o->next_free + sizeof (void *) > __o->chunk_limit) \
|
if (__o->next_free + sizeof (void *) > __o->chunk_limit) \
|
||||||
_obstack_newchunk (__o, sizeof (void *)); \
|
_obstack_newchunk (__o, sizeof (void *)); \
|
||||||
*((void **)__o->next_free)++ = ((void *)datum); \
|
obstack_ptr_grow_fast (__o, datum); })
|
||||||
(void) 0; })
|
|
||||||
|
|
||||||
# define obstack_int_grow(OBSTACK,datum) \
|
# define obstack_int_grow(OBSTACK,datum) \
|
||||||
__extension__ \
|
__extension__ \
|
||||||
({ struct obstack *__o = (OBSTACK); \
|
({ struct obstack *__o = (OBSTACK); \
|
||||||
if (__o->next_free + sizeof (int) > __o->chunk_limit) \
|
if (__o->next_free + sizeof (int) > __o->chunk_limit) \
|
||||||
_obstack_newchunk (__o, sizeof (int)); \
|
_obstack_newchunk (__o, sizeof (int)); \
|
||||||
*((int *)__o->next_free)++ = ((int)datum); \
|
obstack_int_grow_fast (__o, datum); })
|
||||||
|
|
||||||
|
# define obstack_ptr_grow_fast(OBSTACK,aptr) \
|
||||||
|
__extension__ \
|
||||||
|
({ struct obstack *__o1 = (OBSTACK); \
|
||||||
|
*(const void **) __o1->next_free = (aptr); \
|
||||||
|
__o1->next_free += sizeof (const void *); \
|
||||||
(void) 0; })
|
(void) 0; })
|
||||||
|
|
||||||
# define obstack_ptr_grow_fast(h,aptr) (*((void **) (h)->next_free)++ = (void *)aptr)
|
# define obstack_int_grow_fast(OBSTACK,aint) \
|
||||||
# define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)
|
__extension__ \
|
||||||
|
({ struct obstack *__o1 = (OBSTACK); \
|
||||||
|
*(int *) __o1->next_free = (aint); \
|
||||||
|
__o1->next_free += sizeof (int); \
|
||||||
|
(void) 0; })
|
||||||
|
|
||||||
# define obstack_blank(OBSTACK,length) \
|
# define obstack_blank(OBSTACK,length) \
|
||||||
__extension__ \
|
__extension__ \
|
||||||
|
@ -443,7 +452,7 @@ __extension__ \
|
||||||
int __len = (length); \
|
int __len = (length); \
|
||||||
if (__o->chunk_limit - __o->next_free < __len) \
|
if (__o->chunk_limit - __o->next_free < __len) \
|
||||||
_obstack_newchunk (__o, __len); \
|
_obstack_newchunk (__o, __len); \
|
||||||
__o->next_free += __len; \
|
obstack_blank_fast (__o, __len); \
|
||||||
(void) 0; })
|
(void) 0; })
|
||||||
|
|
||||||
# define obstack_alloc(OBSTACK,length) \
|
# define obstack_alloc(OBSTACK,length) \
|
||||||
|
@ -530,26 +539,29 @@ __extension__ \
|
||||||
# define obstack_1grow(h,datum) \
|
# define obstack_1grow(h,datum) \
|
||||||
( (((h)->next_free + 1 > (h)->chunk_limit) \
|
( (((h)->next_free + 1 > (h)->chunk_limit) \
|
||||||
? (_obstack_newchunk ((h), 1), 0) : 0), \
|
? (_obstack_newchunk ((h), 1), 0) : 0), \
|
||||||
(*((h)->next_free)++ = (datum)))
|
obstack_1grow_fast (h, datum))
|
||||||
|
|
||||||
# define obstack_ptr_grow(h,datum) \
|
# define obstack_ptr_grow(h,datum) \
|
||||||
( (((h)->next_free + sizeof (char *) > (h)->chunk_limit) \
|
( (((h)->next_free + sizeof (char *) > (h)->chunk_limit) \
|
||||||
? (_obstack_newchunk ((h), sizeof (char *)), 0) : 0), \
|
? (_obstack_newchunk ((h), sizeof (char *)), 0) : 0), \
|
||||||
(*((char **) (((h)->next_free+=sizeof(char *))-sizeof(char *))) = ((char *) datum)))
|
obstack_ptr_grow_fast (h, datum))
|
||||||
|
|
||||||
# define obstack_int_grow(h,datum) \
|
# define obstack_int_grow(h,datum) \
|
||||||
( (((h)->next_free + sizeof (int) > (h)->chunk_limit) \
|
( (((h)->next_free + sizeof (int) > (h)->chunk_limit) \
|
||||||
? (_obstack_newchunk ((h), sizeof (int)), 0) : 0), \
|
? (_obstack_newchunk ((h), sizeof (int)), 0) : 0), \
|
||||||
(*((int *) (((h)->next_free+=sizeof(int))-sizeof(int))) = ((int) datum)))
|
obstack_int_grow_fast (h, datum))
|
||||||
|
|
||||||
# define obstack_ptr_grow_fast(h,aptr) (*((char **) (h)->next_free)++ = (char *) aptr)
|
# define obstack_ptr_grow_fast(h,aptr) \
|
||||||
# define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)
|
(((const void **) ((h)->next_free += sizeof (void *)))[-1] = (aptr))
|
||||||
|
|
||||||
|
# define obstack_int_grow_fast(h,aint) \
|
||||||
|
(((int *) ((h)->next_free += sizeof (int)))[-1] = (aptr))
|
||||||
|
|
||||||
# define obstack_blank(h,length) \
|
# define obstack_blank(h,length) \
|
||||||
( (h)->temp = (length), \
|
( (h)->temp = (length), \
|
||||||
(((h)->chunk_limit - (h)->next_free < (h)->temp) \
|
(((h)->chunk_limit - (h)->next_free < (h)->temp) \
|
||||||
? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \
|
? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \
|
||||||
((h)->next_free += (h)->temp))
|
obstack_blank_fast (h, (h)->temp))
|
||||||
|
|
||||||
# define obstack_alloc(h,length) \
|
# define obstack_alloc(h,length) \
|
||||||
(obstack_blank ((h), (length)), obstack_finish ((h)))
|
(obstack_blank ((h), (length)), obstack_finish ((h)))
|
||||||
|
|
Loading…
Reference in New Issue