aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2010-05-27 18:21:31 +0000
committerJason Merrill <jason@redhat.com>2010-05-27 18:21:31 +0000
commit7166ee8b622ce38f7f1db70a044b121e0cef27c0 (patch)
treefa8344e013d4316ebadbfc12c7251e115a22b983
parentf5e97d99d162740fc965aef3516ddd90adaa9ce8 (diff)
Allow compilation with GCC 4.4.gcc-3_2-branch
include/ * obstack.h: Update to GCC 3.3 version. gcc/ * system.h: Don't poison malloc. gcc/cp/ * decl.c (current_binding_level): Add *&. * parse.y (constructor_declarator): Fix for bison pedantry. git-svn-id: https://gcc.gnu.org/svn/gcc/branches/gcc-3_2-branch@159937 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/decl.c6
-rw-r--r--gcc/cp/parse.y8
-rw-r--r--gcc/system.h2
-rw-r--r--include/ChangeLog4
-rw-r--r--include/obstack.h40
7 files changed, 47 insertions, 22 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a6e456c278e..a0cf654b539 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2010-05-27 Jason Merrill <jason@redhat.com>
+
+ * system.h: Don't poison malloc.
+
2003-05-06 Richard Henderson <rth@redhat.com>
* unwind-dw2.c (uw_update_context_1): Only set cfa as sp if
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 81ff7e61c4f..0ae391eefbc 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2010-05-27 Jason Merrill <jason@redhat.com>
+
+ * decl.c (current_binding_level): Add *&.
+ * parse.y (constructor_declarator): Fix for bison pedantry.
+
2003-04-22 Release Manager
* GCC 3.2.3 Released.
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 82ea2279ab2..10933024dc3 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -454,9 +454,9 @@ struct binding_level
/* The binding level currently in effect. */
#define current_binding_level \
- (cfun && cp_function_chain->bindings \
- ? cp_function_chain->bindings \
- : scope_chain->bindings)
+ (*(cfun && cp_function_chain->bindings \
+ ? &cp_function_chain->bindings \
+ : &scope_chain->bindings))
/* The binding level of the current class, if any. */
diff --git a/gcc/cp/parse.y b/gcc/cp/parse.y
index e929ebe9494..5c69c58e90f 100644
--- a/gcc/cp/parse.y
+++ b/gcc/cp/parse.y
@@ -799,7 +799,7 @@ fndef:
constructor_declarator:
nested_name_specifier SELFNAME '('
- { $$ = begin_constructor_declarator ($1, $2); }
+ { $<ttype>$ = begin_constructor_declarator ($1, $2); }
parmlist ')' cv_qualifiers exception_specification_opt
{ $$ = make_call_declarator ($<ttype>4, $5, $7, $8); }
| nested_name_specifier SELFNAME LEFT_RIGHT cv_qualifiers exception_specification_opt
@@ -807,7 +807,7 @@ constructor_declarator:
$$ = make_call_declarator ($$, empty_parms (), $4, $5);
}
| global_scope nested_name_specifier SELFNAME '('
- { $$ = begin_constructor_declarator ($2, $3); }
+ { $<ttype>$ = begin_constructor_declarator ($2, $3); }
parmlist ')' cv_qualifiers exception_specification_opt
{ $$ = make_call_declarator ($<ttype>5, $6, $8, $9); }
| global_scope nested_name_specifier SELFNAME LEFT_RIGHT cv_qualifiers exception_specification_opt
@@ -815,7 +815,7 @@ constructor_declarator:
$$ = make_call_declarator ($$, empty_parms (), $5, $6);
}
| nested_name_specifier self_template_type '('
- { $$ = begin_constructor_declarator ($1, $2); }
+ { $<ttype>$ = begin_constructor_declarator ($1, $2); }
parmlist ')' cv_qualifiers exception_specification_opt
{ $$ = make_call_declarator ($<ttype>4, $5, $7, $8); }
| nested_name_specifier self_template_type LEFT_RIGHT cv_qualifiers exception_specification_opt
@@ -823,7 +823,7 @@ constructor_declarator:
$$ = make_call_declarator ($$, empty_parms (), $4, $5);
}
| global_scope nested_name_specifier self_template_type '('
- { $$ = begin_constructor_declarator ($2, $3); }
+ { $<ttype>$ = begin_constructor_declarator ($2, $3); }
parmlist ')' cv_qualifiers exception_specification_opt
{ $$ = make_call_declarator ($<ttype>5, $6, $8, $9); }
| global_scope nested_name_specifier self_template_type LEFT_RIGHT cv_qualifiers exception_specification_opt
diff --git a/gcc/system.h b/gcc/system.h
index 9747fe0e8f5..70828606e88 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -589,7 +589,7 @@ typedef char _Bool;
#undef realloc
#undef calloc
#undef strdup
- #pragma GCC poison malloc realloc calloc strdup
+ #pragma GCC poison realloc calloc strdup
/* Old target macros that have moved to the target hooks structure. */
#pragma GCC poison ASM_OPEN_PAREN ASM_CLOSE_PAREN \
diff --git a/include/ChangeLog b/include/ChangeLog
index 19bc8005a22..21a248c5c9b 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2010-05-27 Jason Merrill <jason@redhat.com>
+
+ * obstack.h: Update to GCC 3.3 version.
+
2003-04-22 Release Manager
* GCC 3.2.3 Released.
diff --git a/include/obstack.h b/include/obstack.h
index d86d9f2c426..5496ff24071 100644
--- a/include/obstack.h
+++ b/include/obstack.h
@@ -343,7 +343,7 @@ extern int obstack_exit_failure;
#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))
@@ -411,7 +411,7 @@ __extension__ \
({ struct obstack *__o = (OBSTACK); \
if (__o->next_free + 1 > __o->chunk_limit) \
_obstack_newchunk (__o, 1); \
- *(__o->next_free)++ = (datum); \
+ obstack_1grow_fast (__o, datum); \
(void) 0; })
/* These assume that the obstack alignment is good enough for pointers or ints,
@@ -423,19 +423,28 @@ __extension__ \
({ struct obstack *__o = (OBSTACK); \
if (__o->next_free + sizeof (void *) > __o->chunk_limit) \
_obstack_newchunk (__o, sizeof (void *)); \
- *((void **)__o->next_free)++ = ((void *)datum); \
- (void) 0; })
+ obstack_ptr_grow_fast (__o, datum); })
# define obstack_int_grow(OBSTACK,datum) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
if (__o->next_free + sizeof (int) > __o->chunk_limit) \
_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; })
-# define obstack_ptr_grow_fast(h,aptr) (*((void **) (h)->next_free)++ = (void *)aptr)
-# define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)
+# define obstack_int_grow_fast(OBSTACK,aint) \
+__extension__ \
+({ struct obstack *__o1 = (OBSTACK); \
+ *(int *) __o1->next_free = (aint); \
+ __o1->next_free += sizeof (int); \
+ (void) 0; })
# define obstack_blank(OBSTACK,length) \
__extension__ \
@@ -443,7 +452,7 @@ __extension__ \
int __len = (length); \
if (__o->chunk_limit - __o->next_free < __len) \
_obstack_newchunk (__o, __len); \
- __o->next_free += __len; \
+ obstack_blank_fast (__o, __len); \
(void) 0; })
# define obstack_alloc(OBSTACK,length) \
@@ -530,26 +539,29 @@ __extension__ \
# define obstack_1grow(h,datum) \
( (((h)->next_free + 1 > (h)->chunk_limit) \
? (_obstack_newchunk ((h), 1), 0) : 0), \
- (*((h)->next_free)++ = (datum)))
+ obstack_1grow_fast (h, datum))
# define obstack_ptr_grow(h,datum) \
( (((h)->next_free + sizeof (char *) > (h)->chunk_limit) \
? (_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) \
( (((h)->next_free + sizeof (int) > (h)->chunk_limit) \
? (_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) \
+ (((const void **) ((h)->next_free += sizeof (void *)))[-1] = (aptr))
-# define obstack_ptr_grow_fast(h,aptr) (*((char **) (h)->next_free)++ = (char *) aptr)
-# define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)
+# define obstack_int_grow_fast(h,aint) \
+ (((int *) ((h)->next_free += sizeof (int)))[-1] = (aptr))
# define obstack_blank(h,length) \
( (h)->temp = (length), \
(((h)->chunk_limit - (h)->next_free < (h)->temp) \
? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \
- ((h)->next_free += (h)->temp))
+ obstack_blank_fast (h, (h)->temp))
# define obstack_alloc(h,length) \
(obstack_blank ((h), (length)), obstack_finish ((h)))