1/* Process declarations and variables for C++ compiler.
2 Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
3 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
4 Hacked by Michael Tiemann (tiemann@cygnus.com)
5
6This file is part of GCC.
7
8GCC is free software; you can redistribute it and/or modify
--- 1712 unchanged lines hidden (view full) ---
1721 }
1722 else
1723 determine_visibility_from_class (decl, DECL_CONTEXT (fn));
1724
1725 /* Local classes in templates have CLASSTYPE_USE_TEMPLATE set,
1726 but have no TEMPLATE_INFO, so don't try to check it. */
1727 use_template = 0;
1728 }
1729 else if (TREE_CODE (decl) == VAR_DECL && DECL_TINFO_P (decl)
1730 && flag_visibility_ms_compat)
1731 {
1732 /* Under -fvisibility-ms-compat, types are visible by default,
1733 even though their contents aren't. */
1734 tree underlying_type = TREE_TYPE (DECL_NAME (decl));
1735 int underlying_vis = type_visibility (underlying_type);
1736 if (underlying_vis == VISIBILITY_ANON
1737 || CLASSTYPE_VISIBILITY_SPECIFIED (underlying_type))
1738 constrain_visibility (decl, underlying_vis);
1739 else
1740 DECL_VISIBILITY (decl) = VISIBILITY_DEFAULT;
1741 }
1742 else if (TREE_CODE (decl) == VAR_DECL && DECL_TINFO_P (decl))
1743 {
1744 /* tinfo visibility is based on the type it's for. */
1745 constrain_visibility
1746 (decl, type_visibility (TREE_TYPE (DECL_NAME (decl))));
1747 }
1748 else if (use_template)
1749 /* Template instantiations and specializations get visibility based
--- 1853 unchanged lines hidden ---
2 Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
3 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
4 Hacked by Michael Tiemann (tiemann@cygnus.com)
5
6This file is part of GCC.
7
8GCC is free software; you can redistribute it and/or modify
--- 1712 unchanged lines hidden (view full) ---
1721 }
1722 else
1723 determine_visibility_from_class (decl, DECL_CONTEXT (fn));
1724
1725 /* Local classes in templates have CLASSTYPE_USE_TEMPLATE set,
1726 but have no TEMPLATE_INFO, so don't try to check it. */
1727 use_template = 0;
1728 }
1729 else if (TREE_CODE (decl) == VAR_DECL && DECL_TINFO_P (decl)
1730 && flag_visibility_ms_compat)
1731 {
1732 /* Under -fvisibility-ms-compat, types are visible by default,
1733 even though their contents aren't. */
1734 tree underlying_type = TREE_TYPE (DECL_NAME (decl));
1735 int underlying_vis = type_visibility (underlying_type);
1736 if (underlying_vis == VISIBILITY_ANON
1737 || CLASSTYPE_VISIBILITY_SPECIFIED (underlying_type))
1738 constrain_visibility (decl, underlying_vis);
1739 else
1740 DECL_VISIBILITY (decl) = VISIBILITY_DEFAULT;
1741 }
1742 else if (TREE_CODE (decl) == VAR_DECL && DECL_TINFO_P (decl))
1743 {
1744 /* tinfo visibility is based on the type it's for. */
1745 constrain_visibility
1746 (decl, type_visibility (TREE_TYPE (DECL_NAME (decl))));
1747 }
1748 else if (use_template)
1749 /* Template instantiations and specializations get visibility based
--- 1853 unchanged lines hidden ---