-
- Downloads
d: Add `@visibility' and `@hidden' attributes.
The `@visibility' attribute is functionality the same as `__attribute__((visibility))', and `@hidden' is a convenience alias to `@visibility("hidden")' defined in the `gcc.attributes' module. As the visibility of a symbol is also indirectly controlled by the `export' keyword, the handling of this in the code generation pass has been improved so that conflicts will be appropriately diagnosed. gcc/d/ChangeLog: * d-attribs.cc (d_langhook_attribute_table): Add visibility. (insert_type_attribute): Use decl_attributes instead of merge_attributes. (insert_decl_attribute): Likewise. (apply_user_attributes): Do nothing when no UDAs applied. (d_handle_visibility_attribute): New function. * d-gimplify.cc (d_gimplify_binary_expr): Adjust. * d-tree.h (set_visibility_for_decl): Declare. * decl.cc (get_symbol_decl): Move setting of visibility flags to... (set_visibility_for_decl): ... here. New function. * types.cc (TypeVisitor::visit (TypeStruct *)): Call set_visibility_for_decl(). (TypeVisitor::visit (TypeClass *)): Likewise. gcc/testsuite/ChangeLog: * gdc.dg/attr_visibility1.d: New test. * gdc.dg/attr_visibility2.d: New test. * gdc.dg/attr_visibility3.d: New test. libphobos/ChangeLog: * libdruntime/gcc/attributes.d (visibility): Define. (hidden): Define.
Showing
- gcc/d/d-attribs.cc 85 additions, 13 deletionsgcc/d/d-attribs.cc
- gcc/d/d-gimplify.cc 2 additions, 2 deletionsgcc/d/d-gimplify.cc
- gcc/d/d-tree.h 1 addition, 0 deletionsgcc/d/d-tree.h
- gcc/d/decl.cc 37 additions, 17 deletionsgcc/d/decl.cc
- gcc/d/types.cc 2 additions, 0 deletionsgcc/d/types.cc
- gcc/testsuite/gdc.dg/attr_visibility1.d 25 additions, 0 deletionsgcc/testsuite/gdc.dg/attr_visibility1.d
- gcc/testsuite/gdc.dg/attr_visibility2.d 26 additions, 0 deletionsgcc/testsuite/gdc.dg/attr_visibility2.d
- gcc/testsuite/gdc.dg/attr_visibility3.d 29 additions, 0 deletionsgcc/testsuite/gdc.dg/attr_visibility3.d
- libphobos/libdruntime/gcc/attributes.d 34 additions, 0 deletionslibphobos/libdruntime/gcc/attributes.d
Loading
Please register or sign in to comment