--- gcc/c-pragma.c 2005-07-19 22:19:16.000000000 +0200 +++ gcc/c-pragma.c 2006-09-06 11:10:12.000000000 +0200 @@ -635,28 +635,9 @@ GCC_BAD ("missing %<(%> after %<#pragma GCC visibility push%> - ignored"); token = c_lex (&x); if (token != CPP_NAME) - { - GCC_BAD ("malformed #pragma GCC visibility push"); - } + GCC_BAD ("malformed #pragma GCC visibility push"); else - { - const char *str = IDENTIFIER_POINTER (x); - VEC_safe_push (visibility, heap, visstack, - default_visibility); - if (!strcmp (str, "default")) - default_visibility = VISIBILITY_DEFAULT; - else if (!strcmp (str, "internal")) - default_visibility = VISIBILITY_INTERNAL; - else if (!strcmp (str, "hidden")) - default_visibility = VISIBILITY_HIDDEN; - else if (!strcmp (str, "protected")) - default_visibility = VISIBILITY_PROTECTED; - else - { - GCC_BAD ("#pragma GCC visibility push() must specify default, internal, hidden or protected"); - } - visibility_options.inpragma = 1; - } + push_visibility (IDENTIFIER_POINTER (x)); if (c_lex (&x) != CPP_CLOSE_PAREN) GCC_BAD ("missing %<(%> after %<#pragma GCC visibility push%> - ignored"); }