Suppress -Wshadow / -Wold-style-cast expanded from system header macros
Thanks to Jonathan Sauer for providing initial test cases.
Fixes PR16093 and PR18147.
llvm-svn: 197150
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index cd28c22..aa2104e 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -5599,6 +5599,8 @@
DeclarationName Name = R.getLookupName();
// Emit warning and note.
+ if (getSourceManager().isInSystemMacro(R.getNameLoc()))
+ return;
Diag(R.getNameLoc(), diag::warn_decl_shadow) << Name << Kind << OldDC;
Diag(ShadowedDecl->getLocation(), diag::note_previous_declaration);
}
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
index 66ca9d4..d1e3c1f 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -5143,9 +5143,9 @@
CastExpr = Result.take();
}
- if (getLangOpts().CPlusPlus && !castType->isVoidType())
- Diag(CastExpr->getLocStart(), diag::warn_old_style_cast)
- << SourceRange(LParenLoc, RParenLoc);
+ if (getLangOpts().CPlusPlus && !castType->isVoidType() &&
+ !getSourceManager().isInSystemMacro(LParenLoc))
+ Diag(LParenLoc, diag::warn_old_style_cast) << CastExpr->getSourceRange();
return BuildCStyleCastExpr(LParenLoc, castTInfo, RParenLoc, CastExpr);
}