diff options
Diffstat (limited to 'clang/lib/Sema/SemaStmt.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaStmt.cpp | 6 | 
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp index d6c3af9e84c80..ff64810062801 100644 --- a/clang/lib/Sema/SemaStmt.cpp +++ b/clang/lib/Sema/SemaStmt.cpp @@ -2838,6 +2838,9 @@ static void DiagnoseForRangeConstVariableCopies(Sema &SemaRef,  ///    Suggest "const foo &x" to prevent the copy.  static void DiagnoseForRangeVariableCopies(Sema &SemaRef,                                             const CXXForRangeStmt *ForStmt) { +  if (SemaRef.inTemplateInstantiation()) +    return; +    if (SemaRef.Diags.isIgnored(diag::warn_for_range_const_reference_copy,                                ForStmt->getBeginLoc()) &&        SemaRef.Diags.isIgnored(diag::warn_for_range_variable_always_copy, @@ -2860,6 +2863,9 @@ static void DiagnoseForRangeVariableCopies(Sema &SemaRef,    if (!InitExpr)      return; +  if (InitExpr->getExprLoc().isMacroID()) +    return; +    if (VariableType->isReferenceType()) {      DiagnoseForRangeReferenceVariableCopies(SemaRef, VD,                                              ForStmt->getRangeInit()->getType());  | 
