Hi Rafael, this breaks the components build in chrome,
(below) On Wed, Apr 18, 2012 at 10:34 PM, Rafael Espindola <[email protected]> wrote: > Author: rafael > Date: Thu Apr 19 00:34:51 2012 > New Revision: 155102 > > URL: http://llvm.org/viewvc/llvm-project?rev=155102&view=rev > Log: > In mergeVisibilityWithMin, let an implicit hidden symbol take precedence over > an explicit default one. This means that with -fvisibility hidden we > now produce a hidden symbol for > > template <typename T> > class DEFAULT foo { > void bar() {} > }; > class zed {}; > template class foo<zed>; > > This matches the behaviour of gcc 4.7. > > Modified: > cfe/trunk/include/clang/AST/Decl.h > cfe/trunk/test/CodeGenCXX/visibility.cpp > > Modified: cfe/trunk/include/clang/AST/Decl.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Decl.h?rev=155102&r1=155101&r2=155102&view=diff > ============================================================================== > --- cfe/trunk/include/clang/AST/Decl.h (original) > +++ cfe/trunk/include/clang/AST/Decl.h Thu Apr 19 00:34:51 2012 > @@ -281,9 +281,10 @@ > if (visibility() < V) > return; > > - // If this visibility is explicit, keep it. > - if (visibilityExplicit() && !E) > + // Don't lose the explicit bit for nothing > + if (visibility() == V && visibilityExplicit()) > return; > + > setVisibility(V, E); > } > void mergeVisibility(LinkageInfo Other) { > > Modified: cfe/trunk/test/CodeGenCXX/visibility.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/visibility.cpp?rev=155102&r1=155101&r2=155102&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/visibility.cpp (original) > +++ cfe/trunk/test/CodeGenCXX/visibility.cpp Thu Apr 19 00:34:51 2012 > @@ -510,7 +510,7 @@ > }; > template class foo::bar<zed>; > // CHECK: define weak_odr void @_ZN7PR101133foo3barINS_3zedEE3zedEv > - // CHECK-HIDDEN: define weak_odr void @_ZN7PR101133foo3barINS_3zedEE3zedEv > + // CHECK-HIDDEN: define weak_odr hidden void > @_ZN7PR101133foo3barINS_3zedEE3zedEv which isn't all that surprising since you're changing the test expectation of a test we added when we made it work. Why did you make this change? Can you revert it again, please? (The component build works fine with gcc 4.4, and I believe 4.6, and it used to work fine in clang up until this revision). Nico > } > > namespace PR11690 { > @@ -541,7 +541,7 @@ > }; > template class foo::zed<baz>; > // CHECK: define weak_odr void > @_ZN9PR11690_23foo3zedINS_3bazENS0_3barEE3barEv > - // CHECK-HIDDEN: define weak_odr void > @_ZN9PR11690_23foo3zedINS_3bazENS0_3barEE3barEv > + // CHECK-HIDDEN: define weak_odr hidden void > @_ZN9PR11690_23foo3zedINS_3bazENS0_3barEE3barEv > } > > namespace test23 { > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
