summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/visibility.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2012-07-11 18:14:09 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2012-07-11 18:14:09 +0000
commit1fa9fade3855a0c8c1bc067a3f322fdef05191d9 (patch)
tree8b9e75e7de861cbfcfb60e8b4adce6474a919744 /clang/test/CodeGenCXX/visibility.cpp
parent73daa0f74038dce747db9aaaa208889b0cbef6c1 (diff)
downloadbcm5719-llvm-1fa9fade3855a0c8c1bc067a3f322fdef05191d9.tar.gz
bcm5719-llvm-1fa9fade3855a0c8c1bc067a3f322fdef05191d9.zip
Handle #pragma visibility in explicit specializations and enums.
llvm-svn: 160057
Diffstat (limited to 'clang/test/CodeGenCXX/visibility.cpp')
-rw-r--r--clang/test/CodeGenCXX/visibility.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/visibility.cpp b/clang/test/CodeGenCXX/visibility.cpp
index 60a77927ff0..bf6c6eea803 100644
--- a/clang/test/CodeGenCXX/visibility.cpp
+++ b/clang/test/CodeGenCXX/visibility.cpp
@@ -980,10 +980,24 @@ namespace test53 {
static void _M_fill_insert();
};
#pragma GCC visibility push(hidden)
+ // GCC doesn't seem to use the visibility of enums at all, we do.
+ enum zed {v1};
+
+ // GCC fails to mark this specialization hidden, we mark it.
+ template<>
+ struct vector<int> {
+ static void _M_fill_insert();
+ };
void foo() {
vector<unsigned>::_M_fill_insert();
+ vector<int>::_M_fill_insert();
+ vector<zed>::_M_fill_insert();
}
#pragma GCC visibility pop
// CHECK: declare void @_ZN6test536vectorIjE14_M_fill_insertEv
// CHECK-HIDDEN: declare void @_ZN6test536vectorIjE14_M_fill_insertEv
+ // CHECK: declare hidden void @_ZN6test536vectorIiE14_M_fill_insertEv
+ // CHECK-HIDDEN: declare hidden void @_ZN6test536vectorIiE14_M_fill_insertEv
+ // CHECK: declare hidden void @_ZN6test536vectorINS_3zedEE14_M_fill_insertEv
+ // CHECK-HIDDEN: declare hidden void @_ZN6test536vectorINS_3zedEE14_M_fill_insertEv
}
OpenPOWER on IntegriCloud