[PATCH] D32646: Fix a bug that -Wmissing-braces fires on system headers
Yuka Takahashi via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sun Apr 30 06:11:18 PDT 2017
yamaguchi updated this revision to Diff 97227.
yamaguchi marked 5 inline comments as done.
yamaguchi added a comment.
Changed to early return.
https://reviews.llvm.org/D32646
Files:
lib/Sema/SemaInit.cpp
test/Sema/warn-missing-braces.c
Index: test/Sema/warn-missing-braces.c
===================================================================
--- test/Sema/warn-missing-braces.c
+++ test/Sema/warn-missing-braces.c
@@ -1,3 +1,21 @@
// RUN: %clang_cc1 -fsyntax-only -Wmissing-braces -verify %s
+#ifdef BE_THE_HEADER
+#pragma clang system_header
+
+typedef struct _foo {
+ unsigned char Data[2];
+} foo;
+
+#define BAR { 0 }
+
+#else
+
+#define BE_THE_HEADER
+#include __FILE__
+
int a[2][2] = { 0, 1, 2, 3 }; // expected-warning{{suggest braces}} expected-warning{{suggest braces}}
+
+foo g = BAR; // should not show warnings
+
+#endif
Index: lib/Sema/SemaInit.cpp
===================================================================
--- lib/Sema/SemaInit.cpp
+++ lib/Sema/SemaInit.cpp
@@ -885,8 +885,13 @@
StructuredSubobjectInitList->setRBraceLoc(EndLoc);
}
- // Complain about missing braces.
+ // Complain about missing braces when rhs is not a macro from system header.
if (T->isArrayType() || T->isRecordType()) {
+ SourceLocation SpellingLoc = StructuredSubobjectInitList->getLocStart();
+ SpellingLoc = SemaRef.getSourceManager().getSpellingLoc(SpellingLoc);
+ if (SpellingLoc.isValid() &&
+ SemaRef.getSourceManager().isInSystemHeader(SpellingLoc))
+ return;
SemaRef.Diag(StructuredSubobjectInitList->getLocStart(),
diag::warn_missing_braces)
<< StructuredSubobjectInitList->getSourceRange()
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D32646.97227.patch
Type: text/x-patch
Size: 1470 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170430/12fe50c2/attachment.bin>
More information about the cfe-commits
mailing list