diff options
author | John McCall <rjmccall@apple.com> | 2010-03-01 23:49:17 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2010-03-01 23:49:17 +0000 |
commit | bd8d9bd39c2df594c4104c117b3b8fea555e8b2c (patch) | |
tree | 630f4b126a2e96a11dc36da35ebc14b0312c505d /clang/lib/Sema/SemaTemplateDeduction.cpp | |
parent | ac8b9246f6b318d77677e96bdf9225ba1dfcaf45 (diff) | |
download | bcm5719-llvm-bd8d9bd39c2df594c4104c117b3b8fea555e8b2c.tar.gz bcm5719-llvm-bd8d9bd39c2df594c4104c117b3b8fea555e8b2c.zip |
Split out types that are non-canonical unless dependent as their own
category. Use this in a few places to eliminate unnecessary TST cases and
do some future-proofing. Provide terrible manglings for typeof. Mangle
decltype with some hope of accuracy.
Our manglings for some of the cases covered in the testcase are different
from gcc's, which I've raised as an issue with the ABI list.
llvm-svn: 97523
Diffstat (limited to 'clang/lib/Sema/SemaTemplateDeduction.cpp')
-rw-r--r-- | clang/lib/Sema/SemaTemplateDeduction.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaTemplateDeduction.cpp b/clang/lib/Sema/SemaTemplateDeduction.cpp index df4d4a828d4..7f16400aea8 100644 --- a/clang/lib/Sema/SemaTemplateDeduction.cpp +++ b/clang/lib/Sema/SemaTemplateDeduction.cpp @@ -2419,6 +2419,27 @@ MarkUsedTemplateParameters(Sema &SemaRef, QualType T, OnlyDeduced, Depth, Used); break; + case Type::TypeOf: + if (!OnlyDeduced) + MarkUsedTemplateParameters(SemaRef, + cast<TypeOfType>(T)->getUnderlyingType(), + OnlyDeduced, Depth, Used); + break; + + case Type::TypeOfExpr: + if (!OnlyDeduced) + MarkUsedTemplateParameters(SemaRef, + cast<TypeOfExprType>(T)->getUnderlyingExpr(), + OnlyDeduced, Depth, Used); + break; + + case Type::Decltype: + if (!OnlyDeduced) + MarkUsedTemplateParameters(SemaRef, + cast<DecltypeType>(T)->getUnderlyingExpr(), + OnlyDeduced, Depth, Used); + break; + // None of these types have any template parameters in them. case Type::Builtin: case Type::VariableArray: |