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);
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);
void f(T x) {
// FIXME: crummy error message below
goto *x; // expected-error{{incompatible}}
+
+ prior:
+ T prior_label = &&prior;
+
+ T later_label = &&later;
+
+ later:
+ (void)(1+1);
}
};