[cfe-commits] r155102 - in /cfe/trunk: include/clang/AST/Decl.h test/CodeGenCXX/visibility.cpp
Rafael Espindola
rafael.espindola at gmail.com
Wed Apr 18 22:34:51 PDT 2012
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
}
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 {
More information about the cfe-commits
mailing list