From d53def22efc4a3d3d30ae05ca2d2f720181ae417 Mon Sep 17 00:00:00 2001 From: Richard Trieu Date: Tue, 22 Jul 2014 04:42:15 +0000 Subject: Fix '&' printing for template arguments in parentheses in template diffing. llvm-svn: 213613 --- clang/lib/AST/ASTDiagnostic.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'clang/lib') diff --git a/clang/lib/AST/ASTDiagnostic.cpp b/clang/lib/AST/ASTDiagnostic.cpp index 20540f3ce12..5f78df2c473 100644 --- a/clang/lib/AST/ASTDiagnostic.cpp +++ b/clang/lib/AST/ASTDiagnostic.cpp @@ -994,7 +994,8 @@ class TemplateDiff { bool FromAddressOf = false; if (FromValueDecl) { if (FromExpr) { - if (UnaryOperator *UO = dyn_cast(FromExpr)) { + if (UnaryOperator *UO = + dyn_cast(FromExpr->IgnoreParens())) { if (UO->getOpcode() == UO_AddrOf) FromAddressOf = true; } @@ -1007,14 +1008,16 @@ class TemplateDiff { bool ToAddressOf = false; if (ToValueDecl) { if (ToExpr) { - if (UnaryOperator *UO = dyn_cast(ToExpr)) { + if (UnaryOperator *UO = + dyn_cast(ToExpr->IgnoreParens())) { if (UO->getOpcode() == UO_AddrOf) { ToAddressOf = true; } } } else { - if (!ArgumentType->isReferenceType()) + if (!ArgumentType->isReferenceType()) { ToAddressOf = true; + } } } Tree.SetNode(FromValueDecl, ToValueDecl, FromAddressOf, ToAddressOf); -- cgit v1.2.3