From: hubicka Date: Thu, 20 May 2010 14:57:27 +0000 (+0000) Subject: PR middle-end/44197 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d3577e1b34eed00ae542039ee6633b3be54060e4;p=thirdparty%2Fgcc.git PR middle-end/44197 * varpool.c (varpool_remove_node): Handle in-varpool aliases. * gcc.c-torture/compile/pr44197.c: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159629 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 972f6043908c..5f96aa7fe90a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2010-05-20 Jan Hubicka + + PR middle-end/44197 + * varpool.c (varpool_remove_node): Handle in-varpool aliases. + 2010-05-20 Kenneth Zadeck PR bootstrap/43870 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e5412e8a9901..7272fe5ae4f7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-05-20 Jan Hubicka + + PR middle-end/44197 + * gcc.c-torture/compile/pr44197.c: New file. + 2010-05-20 Uros Bizjak * gcc.target/i386/i386.exp (check_effective_target_3dnow): diff --git a/gcc/testsuite/gcc.c-torture/compile/pr44197.c b/gcc/testsuite/gcc.c-torture/compile/pr44197.c new file mode 100644 index 000000000000..9a97d7790783 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr44197.c @@ -0,0 +1,22 @@ +typedef unsigned short int __uint16_t; +enum +{ + _ISupper = (1 << (0)), _ISlower = (1 << (1)), _ISalpha = + (1 << (2)), _ISdigit = (1 << (3)), _ISxdigit = (1 << (4)), _ISspace = + (1 << (5)), _ISprint = (1 << (6)), _ISgraph = (1 << (7)), _ISblank = + (1 << (8)), _IScntrl = (1 << (9)), _ISpunct = (1 << (10)), _ISalnum = + (1 << (11)) +}; +typedef __uint16_t __ctype_mask_t; +extern const __ctype_mask_t *__C_ctype_b; +extern +__typeof (__C_ctype_b) + __C_ctype_b __asm__ ("" "__GI___C_ctype_b") + __attribute__ ((visibility ("hidden"))); + static const __ctype_mask_t __C_ctype_b_data[] = { + }; + +const __ctype_mask_t *__C_ctype_b = __C_ctype_b_data + 128; +extern +__typeof (__C_ctype_b) + __EI___C_ctype_b __attribute__ ((alias ("" "__GI___C_ctype_b"))); diff --git a/gcc/varpool.c b/gcc/varpool.c index c713a7705f6e..7185c853f9fd 100644 --- a/gcc/varpool.c +++ b/gcc/varpool.c @@ -167,7 +167,7 @@ varpool_remove_node (struct varpool_node *node) node->prev->next = node->next; else { - if (node->alias) + if (node->alias && node->extra_name) { gcc_assert (node->extra_name->extra_name == node); node->extra_name->extra_name = node->next;