Template instantiation for the GNU address-of-label extension.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72301 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaTemplateInstantiateExpr.cpp b/lib/Sema/SemaTemplateInstantiateExpr.cpp
index f20d699..1e57e1b 100644
--- a/lib/Sema/SemaTemplateInstantiateExpr.cpp
+++ b/lib/Sema/SemaTemplateInstantiateExpr.cpp
@@ -55,7 +55,7 @@
     OwningExprResult VisitCXXOperatorCallExpr(CXXOperatorCallExpr *E);
     OwningExprResult VisitCXXConditionDeclExpr(CXXConditionDeclExpr *E);
     OwningExprResult VisitConditionalOperator(ConditionalOperator *E);
-    // FIXME: AddrLabelExpr
+    OwningExprResult VisitAddrLabelExpr(AddrLabelExpr *E);
     OwningExprResult VisitStmtExpr(StmtExpr *E);
     OwningExprResult VisitTypesCompatibleExpr(TypesCompatibleExpr *E);
     OwningExprResult VisitShuffleVectorExpr(ShuffleVectorExpr *E);
@@ -526,6 +526,13 @@
                                     move(Cond), move(LHS), move(RHS));
 }
 
+Sema::OwningExprResult 
+TemplateExprInstantiator::VisitAddrLabelExpr(AddrLabelExpr *E) {
+  return SemaRef.ActOnAddrLabel(E->getAmpAmpLoc(),
+                                E->getLabelLoc(),
+                                E->getLabel()->getID());
+}
+
 Sema::OwningExprResult TemplateExprInstantiator::VisitStmtExpr(StmtExpr *E) {
   Sema::OwningStmtResult SubStmt 
     = SemaRef.InstantiateCompoundStmt(E->getSubStmt(), TemplateArgs, true);