aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancois Pichet <pichet2000@gmail.com>2011-04-28 05:12:34 +0000
committerFrancois Pichet <pichet2000@gmail.com>2011-04-28 05:12:34 +0000
commit11f98d0691312f70be40315438666dafb09c458a (patch)
treea35b4130c7ef448cfe5e831e0ddb007e33b8e261
parentba29bd25515fbd99e98ba0fedb9d93617b27609e (diff)
Update r130381 to check for UO_AddrOf.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130384 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Sema/SemaTemplate.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/lib/Sema/SemaTemplate.cpp b/lib/Sema/SemaTemplate.cpp
index ae80181d84..d5d1fcbb84 100644
--- a/lib/Sema/SemaTemplate.cpp
+++ b/lib/Sema/SemaTemplate.cpp
@@ -3093,16 +3093,15 @@ CheckTemplateArgumentAddressOfObjectOrFunction(Sema &S,
bool AddressTaken = false;
SourceLocation AddrOpLoc;
if (UnaryOperator *UnOp = dyn_cast<UnaryOperator>(Arg)) {
-
- // Support &__uuidof(class_with_uuid) as a non-type template argument.
- // Very common in Microsoft COM headers.
- if (S.getLangOptions().Microsoft &&
- isa<CXXUuidofExpr>(UnOp->getSubExpr())) {
- Converted = TemplateArgument(ArgIn);
- return false;
- }
-
if (UnOp->getOpcode() == UO_AddrOf) {
+ // Support &__uuidof(class_with_uuid) as a non-type template argument.
+ // Very common in Microsoft COM headers.
+ if (S.getLangOptions().Microsoft &&
+ isa<CXXUuidofExpr>(UnOp->getSubExpr())) {
+ Converted = TemplateArgument(ArgIn);
+ return false;
+ }
+
DRE = dyn_cast<DeclRefExpr>(UnOp->getSubExpr());
AddressTaken = true;
AddrOpLoc = UnOp->getOperatorLoc();