summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTyker <tyker1@outlook.com>2020-01-06 22:04:55 +0100
committerTyker <tyker1@outlook.com>2020-01-06 23:22:27 +0100
commitf5329bfc76bb6fc30a589e8238aabc005c52e5d6 (patch)
treee049e832e686c707a3965843ba548d0a5c4a746d
parentee6b8722ffa101b57af9029c84691cb7e8a43799 (diff)
downloadbcm5719-llvm-f5329bfc76bb6fc30a589e8238aabc005c52e5d6.tar.gz
bcm5719-llvm-f5329bfc76bb6fc30a589e8238aabc005c52e5d6.zip
[Diagnostic] make Wmisleading-indendation not warn about labels
Reviewers: aaron.ballman, xbolva00 Reviewed By: aaron.ballman Subscribers: nickdesaulniers, nathanchance Differential Revision: https://reviews.llvm.org/D72202
-rw-r--r--clang/lib/Parse/ParseStmt.cpp10
-rw-r--r--clang/test/Parser/warn-misleading-indentation.cpp7
2 files changed, 13 insertions, 4 deletions
diff --git a/clang/lib/Parse/ParseStmt.cpp b/clang/lib/Parse/ParseStmt.cpp
index b7965401565..0339328ca51 100644
--- a/clang/lib/Parse/ParseStmt.cpp
+++ b/clang/lib/Parse/ParseStmt.cpp
@@ -1272,10 +1272,12 @@ struct MisleadingIndentationChecker {
if (PrevColNum != 0 && CurColNum != 0 && StmtColNum != 0 &&
((PrevColNum > StmtColNum && PrevColNum == CurColNum) ||
- !Tok.isAtStartOfLine()) && SM.getPresumedLineNumber(StmtLoc) !=
- SM.getPresumedLineNumber(Tok.getLocation())) {
- P.Diag(Tok.getLocation(), diag::warn_misleading_indentation)
- << Kind;
+ !Tok.isAtStartOfLine()) &&
+ SM.getPresumedLineNumber(StmtLoc) !=
+ SM.getPresumedLineNumber(Tok.getLocation()) &&
+ (Tok.isNot(tok::identifier) ||
+ P.getPreprocessor().LookAhead(0).isNot(tok::colon))) {
+ P.Diag(Tok.getLocation(), diag::warn_misleading_indentation) << Kind;
P.Diag(StmtLoc, diag::note_previous_statement);
}
}
diff --git a/clang/test/Parser/warn-misleading-indentation.cpp b/clang/test/Parser/warn-misleading-indentation.cpp
index 4b9d45b19ca..8339f21099c 100644
--- a/clang/test/Parser/warn-misleading-indentation.cpp
+++ b/clang/test/Parser/warn-misleading-indentation.cpp
@@ -305,3 +305,10 @@ int main(int argc, char* argv[]) {
fail:;
}
+void f_label(int b) {
+ if (b)
+ return;
+ a:
+ return;
+ goto a;
+}
OpenPOWER on IntegriCloud