summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorRichard Trieu <rtrieu@google.com>2014-07-22 04:06:54 +0000
committerRichard Trieu <rtrieu@google.com>2014-07-22 04:06:54 +0000
commit63056c391842ebf9a9d82caab7b9ef13d15529e2 (patch)
tree41159e4b4b4f883216f28b031d53bc1c7f42f831 /clang
parent2fc9a2b8eb7cc766e96fba89be7e0fea5eef0a77 (diff)
downloadbcm5719-llvm-63056c391842ebf9a9d82caab7b9ef13d15529e2.tar.gz
bcm5719-llvm-63056c391842ebf9a9d82caab7b9ef13d15529e2.zip
More gracefully handle parentheses in templare arguments in template diffing.
llvm-svn: 213611
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/AST/ASTDiagnostic.cpp3
-rw-r--r--clang/test/Misc/diag-template-diffing.cpp6
2 files changed, 7 insertions, 2 deletions
diff --git a/clang/lib/AST/ASTDiagnostic.cpp b/clang/lib/AST/ASTDiagnostic.cpp
index 15e288acb9a..20540f3ce12 100644
--- a/clang/lib/AST/ASTDiagnostic.cpp
+++ b/clang/lib/AST/ASTDiagnostic.cpp
@@ -1184,7 +1184,8 @@ class TemplateDiff {
}
DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(ArgExpr);
if (!DRE) {
- DRE = cast<DeclRefExpr>(cast<UnaryOperator>(ArgExpr)->getSubExpr());
+ DRE = cast<DeclRefExpr>(
+ cast<UnaryOperator>(ArgExpr->IgnoreParens())->getSubExpr());
}
return DRE->getDecl();
diff --git a/clang/test/Misc/diag-template-diffing.cpp b/clang/test/Misc/diag-template-diffing.cpp
index 41cdca47126..391915ee970 100644
--- a/clang/test/Misc/diag-template-diffing.cpp
+++ b/clang/test/Misc/diag-template-diffing.cpp
@@ -1114,11 +1114,15 @@ struct Wrapper {};
template <class T>
Wrapper<T> MakeWrapper();
-int global;
+int global, global2;
constexpr int * ptr = nullptr;
Wrapper<S<ptr>> W = MakeWrapper<S<&global>>();
// Don't print an extra '&' for 'ptr'
// CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<&global>>' to 'Wrapper<S<ptr>>'
+
+Wrapper<S<(&global2)>> W2 = MakeWrapper<S<&global>>();
+// Handle parens correctly
+// CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<&global>>' to 'Wrapper<S<global2>>'
}
// CHECK-ELIDE-NOTREE: {{[0-9]*}} errors generated.
OpenPOWER on IntegriCloud