diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-07-01 23:19:58 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-07-01 23:19:58 +0000 |
| commit | da6c234c39e6ddf3b1122f7add35972167e13c09 (patch) | |
| tree | e78afdd5bb6aa1e4b7dba75195ef79d4146ef01f /clang/test | |
| parent | 9729fb33156d3a6cbe7e55a389ac7dd501cc9dfe (diff) | |
| download | bcm5719-llvm-da6c234c39e6ddf3b1122f7add35972167e13c09.tar.gz bcm5719-llvm-da6c234c39e6ddf3b1122f7add35972167e13c09.zip | |
[modules] Merging support for specializations of a function template. This very
rarely matters, but can affect whether two dependent types are canonically
equivalent.
llvm-svn: 241207
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/Modules/Inputs/submodules-merge-defs/defs.h | 8 | ||||
| -rw-r--r-- | clang/test/Modules/submodules-merge-defs.cpp | 2 |
2 files changed, 10 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/submodules-merge-defs/defs.h b/clang/test/Modules/Inputs/submodules-merge-defs/defs.h index bf720aaba33..bda0567c93a 100644 --- a/clang/test/Modules/Inputs/submodules-merge-defs/defs.h +++ b/clang/test/Modules/Inputs/submodules-merge-defs/defs.h @@ -86,3 +86,11 @@ namespace SeparateInline { namespace TrailingAttributes { template<typename T> struct X {} __attribute__((aligned(8))); } + +namespace MergeFunctionTemplateSpecializations { + template<typename T> T f(); + template<typename T> struct X { + template<typename U> using Q = decltype(f<T>() + U()); + }; + using xiq = X<int>::Q<int>; +} diff --git a/clang/test/Modules/submodules-merge-defs.cpp b/clang/test/Modules/submodules-merge-defs.cpp index 2e771c1562b..92c784440b9 100644 --- a/clang/test/Modules/submodules-merge-defs.cpp +++ b/clang/test/Modules/submodules-merge-defs.cpp @@ -100,6 +100,8 @@ J<> post_j2; FriendDefArg::Y<int> friend_def_arg; FriendDefArg::D<> friend_def_arg_d; +MergeFunctionTemplateSpecializations::X<int>::Q<char> xiqc; + #ifdef TEXTUAL #include "use-defs.h" void use_static_inline() { StaticInline::g({}); } |

