Skip to content
Snippets Groups Projects
  • Jason Merrill's avatar
    0ed5edac
    re PR c++/21764 (visibility attributes on namespace scope) · 0ed5edac
    Jason Merrill authored
            PR c++/21764
            * c-pragma.c (visstack): Move out of handle_pragma_visibility.
            (push_visibility, pop_visibility): Likewise.
            * c-pragma.h: Declare them.
            * cp/name-lookup.h (struct cp_binding_level): Add has_visibility
            bitfield.
            * cp/name-lookup.c: Include c-pragma.h.
            (push_namespace_with_attribs): Split out from push_namespace.
            Push visibility if appropriate.  Set TREE_PUBLIC on namespaces.
            (leave_scope): Pop visibility if appropriate.
            * cp/parser.c (cp_parser_declaration, cp_parser_namespace_name): Allow
            attributes on namespace declarations.
    
            PR c++/19238
            * cp/decl.c (cp_finish_decl): Call determine_visibility later.
            (start_preparsed_function): Likewise.
            * cp/cp-tree.h (CP_TYPE_CONTEXT, TYPE_NAMESPACE_SCOPE_P): New macros.
            (TYPE_CLASS_SCOPE_P, TYPE_FUNCTION_SCOPE_P): New macros.
            * cp/decl2.c (determine_visibility_from_class): Split out from...
            (determine_visibility): ...here.  Handle function scope and
            nested classes.
            (import_export_decl): Move visibility handling to
            determine_visibility_from_class.
    
    From-SVN: r112239
    0ed5edac
    History
    re PR c++/21764 (visibility attributes on namespace scope)
    Jason Merrill authored
            PR c++/21764
            * c-pragma.c (visstack): Move out of handle_pragma_visibility.
            (push_visibility, pop_visibility): Likewise.
            * c-pragma.h: Declare them.
            * cp/name-lookup.h (struct cp_binding_level): Add has_visibility
            bitfield.
            * cp/name-lookup.c: Include c-pragma.h.
            (push_namespace_with_attribs): Split out from push_namespace.
            Push visibility if appropriate.  Set TREE_PUBLIC on namespaces.
            (leave_scope): Pop visibility if appropriate.
            * cp/parser.c (cp_parser_declaration, cp_parser_namespace_name): Allow
            attributes on namespace declarations.
    
            PR c++/19238
            * cp/decl.c (cp_finish_decl): Call determine_visibility later.
            (start_preparsed_function): Likewise.
            * cp/cp-tree.h (CP_TYPE_CONTEXT, TYPE_NAMESPACE_SCOPE_P): New macros.
            (TYPE_CLASS_SCOPE_P, TYPE_FUNCTION_SCOPE_P): New macros.
            * cp/decl2.c (determine_visibility_from_class): Split out from...
            (determine_visibility): ...here.  Handle function scope and
            nested classes.
            (import_export_decl): Move visibility handling to
            determine_visibility_from_class.
    
    From-SVN: r112239