[LLVMbugs] [Bug 13688] New: Another visibility error in combination with libc++

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Fri Aug 24 05:28:41 PDT 2012


http://llvm.org/bugs/show_bug.cgi?id=13688

             Bug #: 13688
           Summary: Another visibility error in combination with libc++
           Product: clang
           Version: trunk
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: dimitry at andric.com
                CC: dgregor at apple.com, llvmbugs at cs.uiuc.edu
    Classification: Unclassified


Similar to bug 13662, but now with default visibility, somewhere in the Firefox
build it uses the following construction:

  #pragma GCC visibility push(default)
  #include <iterator>

When this is compiled with -stdlib=libc++, a bunch of errors pops up:

  In file included from foxvis4.cpp:2:
  /usr/include/c++/v1/iterator:1231:8: error: visibility does not match
previous declaration
  inline _LIBCPP_INLINE_VISIBILITY
     ^
  /usr/include/c++/v1/__config:129:51: note: expanded from macro
'_LIBCPP_INLINE_VISIBILITY'
  #define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__visibility__("hidden"),
__always_inline__))
                            ^
  foxvis4.cpp:1:13: note: previous attribute is here
  #pragma GCC visibility push(default)
          ^
  [...]

Reduced, the problem case becomes:

  #pragma GCC visibility push(default)

  template <class _Iter> class __wrap_iter;

  template <class _Iter1, class _Iter2>
  bool
  operator==(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&);

  template <class _Iter1, class _Iter2>
  inline __attribute__((__visibility__("hidden"), __always_inline__))
  bool
  operator==(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y)
  {
    return true;
  }

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list