diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2012-07-31 19:02:02 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2012-07-31 19:02:02 +0000 |
| commit | fb4263f156b3df4c0dd03fbde6f5fb08e707e3bd (patch) | |
| tree | 96ce64f6c9f90d6f6d895e4ee8e0950de829dbaf /clang/test/CodeGenCXX | |
| parent | 3a810eda9167017139dee03892e87903d1a91508 (diff) | |
| download | bcm5719-llvm-fb4263f156b3df4c0dd03fbde6f5fb08e707e3bd.tar.gz bcm5719-llvm-fb4263f156b3df4c0dd03fbde6f5fb08e707e3bd.zip | |
Consider the visibility of template template arguments. GCC doesn't, but it also
fails to consider the linkage, which we were already considering.
llvm-svn: 161070
Diffstat (limited to 'clang/test/CodeGenCXX')
| -rw-r--r-- | clang/test/CodeGenCXX/visibility.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/visibility.cpp b/clang/test/CodeGenCXX/visibility.cpp index d2f58f968d3..014503911a4 100644 --- a/clang/test/CodeGenCXX/visibility.cpp +++ b/clang/test/CodeGenCXX/visibility.cpp @@ -1094,3 +1094,21 @@ namespace test59 { // CHECK-HIDDEN: define linkonce_odr hidden void @_ZN6test594testIXadL_ZNS_1fEvEEXadL_ZNS_1gEvEEEEvv } } + +namespace test60 { + template<int i> + class __attribute__((visibility("hidden"))) a {}; + template<int i> + class __attribute__((visibility("default"))) b {}; + template<template<int> class x, template<int> class y> + void test() {} + void use() { + test<a, b>(); + // CHECK: define linkonce_odr hidden void @_ZN6test604testINS_1aENS_1bEEEvv + // CHECK-HIDDEN: define linkonce_odr hidden void @_ZN6test604testINS_1aENS_1bEEEvv + + test<b, a>(); + // CHECK: define linkonce_odr hidden void @_ZN6test604testINS_1bENS_1aEEEvv + // CHECK-HIDDEN: define linkonce_odr hidden void @_ZN6test604testINS_1bENS_1aEEEvv + } +} |

