Hello! This was uncovered by x86 lto-profiledbootstrap. The patch allows lto-profiledbootstrap to proceed further.
2013-11-12 Uros Bizjak <ubiz...@gmail.com> * cp-demangle.c (d_copy_templates): Cast result of malloc to (struct d_print_template *). (d_print_comp): Cast result of realloc to (struct d_saved scope *). Tested on x86_64-pc-linux-gnu. OK for mainline? Uros.
Index: cp-demangle.c =================================================================== --- cp-demangle.c (revision 204705) +++ cp-demangle.c (working copy) @@ -3968,7 +3968,7 @@ d_copy_templates (struct d_print_info *dpi) for (src = dpi->templates; src != NULL; src = src->next) { struct d_print_template *dst = - malloc (sizeof (struct d_print_template)); + (struct d_print_template *) malloc (sizeof (struct d_print_template)); if (dst == NULL) { @@ -4381,14 +4381,16 @@ d_print_comp (struct d_print_info *dpi, int option if (scope == NULL) { + size_t size; + /* This is the first time SUB has been traversed. We need to capture the current templates so they can be restored if SUB is reentered as a substitution. */ ++dpi->num_saved_scopes; - scopes = realloc (dpi->saved_scopes, - sizeof (struct d_saved_scope) - * dpi->num_saved_scopes); + size = sizeof (struct d_saved_scope) * dpi->num_saved_scopes; + scopes = (struct d_saved_scope *) realloc (dpi->saved_scopes, + size); if (scopes == NULL) { d_print_error (dpi);
Index: cp-demangle.c =================================================================== --- cp-demangle.c (revision 204705) +++ cp-demangle.c (working copy) @@ -3968,7 +3968,7 @@ d_copy_templates (struct d_print_info *dpi) for (src = dpi->templates; src != NULL; src = src->next) { struct d_print_template *dst = - malloc (sizeof (struct d_print_template)); + (struct d_print_template *) malloc (sizeof (struct d_print_template)); if (dst == NULL) { @@ -4381,14 +4381,16 @@ d_print_comp (struct d_print_info *dpi, int option if (scope == NULL) { + size_t size; + /* This is the first time SUB has been traversed. We need to capture the current templates so they can be restored if SUB is reentered as a substitution. */ ++dpi->num_saved_scopes; - scopes = realloc (dpi->saved_scopes, - sizeof (struct d_saved_scope) - * dpi->num_saved_scopes); + size = sizeof (struct d_saved_scope) * dpi->num_saved_scopes; + scopes = (struct d_saved_scope *) realloc (dpi->saved_scopes, + size); if (scopes == NULL) { d_print_error (dpi);