diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2013-05-27 14:50:21 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2013-05-27 14:50:21 +0000 |
commit | 111bb2ef8d117e0a51bdfaaa6fe8c8f407141c08 (patch) | |
tree | 8eacb0102273bbbbdf7a8a96d62b32d6b25926d5 /clang/test/CodeGenCXX/linkage.cpp | |
parent | 1d66e366e96d9622bfdbc9a78383033e89a808b4 (diff) | |
download | bcm5719-llvm-111bb2ef8d117e0a51bdfaaa6fe8c8f407141c08.tar.gz bcm5719-llvm-111bb2ef8d117e0a51bdfaaa6fe8c8f407141c08.zip |
Fix the linkage of local types in inline VisibleNoLinkage functions.
We were handling only local types in inline External functions before.
llvm-svn: 182737
Diffstat (limited to 'clang/test/CodeGenCXX/linkage.cpp')
-rw-r--r-- | clang/test/CodeGenCXX/linkage.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/linkage.cpp b/clang/test/CodeGenCXX/linkage.cpp index c803a941614..9d66934a243 100644 --- a/clang/test/CodeGenCXX/linkage.cpp +++ b/clang/test/CodeGenCXX/linkage.cpp @@ -143,3 +143,19 @@ namespace test11 { } void *h() { return g(); } } + +namespace test12 { + // CHECK-DAG: define linkonce_odr void @_ZN6test123fooIZNS_3barIZNS_3zedEvE2S2EEPvvE2S1EEvv + template <typename T> void foo() {} + template <typename T> inline void *bar() { + enum S1 { + }; + return reinterpret_cast<void *>(foo<S1>); + } + inline void *zed() { + enum S2 { + }; + return reinterpret_cast<void *>(bar<S2>); + } + void *h() { return zed(); } +} |