diff options
author | Patrick Palka <ppalka@gcc.gnu.org> | 2016-01-10 16:39:39 +0000 |
---|---|---|
committer | Patrick Palka <ppalka@gcc.gnu.org> | 2016-01-10 16:39:39 +0000 |
commit | 21efdd809bbc9626f63f8886c69b1a86cd4223fc (patch) | |
tree | b44f1ee9713bcf26b829d8fcfa922bd4b40a40e4 /gcc | |
parent | fd42eed899b14559a2a1dd8bdc07826b2174fb84 (diff) | |
download | gcc-21efdd809bbc9626f63f8886c69b1a86cd4223fc.zip gcc-21efdd809bbc9626f63f8886c69b1a86cd4223fc.tar.gz gcc-21efdd809bbc9626f63f8886c69b1a86cd4223fc.tar.bz2 |
Fix -Wmisleading indentation false-positive for do-while statement
gcc/c-family/ChangeLog:
PR c++/69029
* c-indentation.c (should_warn_for_misleading_indentation):
Don't warn about do-while statements.
gcc/testsuite/ChangeLog:
PR c++/69029
* c-c++-common/Wisleading-indentation.c: Augment test.
From-SVN: r232202
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/c-family/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/c-family/c-indentation.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/Wmisleading-indentation.c | 2 |
4 files changed, 19 insertions, 1 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index a2743d8..d8282d9 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,4 +1,9 @@ -gcc/c-family/ChangeLog: +2016-01-10 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/69029 + * c-indentation.c (should_warn_for_misleading_indentation): + Don't warn about do-while statements. + 2016-01-07 Martin Sebor <msebor@redhat.com> PR c/68966 diff --git a/gcc/c-family/c-indentation.c b/gcc/c-family/c-indentation.c index 3c09336..cd9637d 100644 --- a/gcc/c-family/c-indentation.c +++ b/gcc/c-family/c-indentation.c @@ -202,6 +202,12 @@ should_warn_for_misleading_indentation (const token_indent_info &guard_tinfo, if (line_table->seen_line_directive) return false; + /* We can't usefully warn about do-while statements since the bodies of these + statements are always explicitly delimited at both ends, so control flow is + quite obvious. */ + if (guard_tinfo.keyword == RID_DO) + return false; + /* If the token following the body is a close brace or an "else" then while indentation may be sloppy, there is not much ambiguity about control flow, e.g. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f233bb9..615a527 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-01-10 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/69029 + * c-c++-common/Wisleading-indentation.c: Augment test. + 2016-01-10 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/69154 diff --git a/gcc/testsuite/c-c++-common/Wmisleading-indentation.c b/gcc/testsuite/c-c++-common/Wmisleading-indentation.c index 491291c..25db8fe 100644 --- a/gcc/testsuite/c-c++-common/Wmisleading-indentation.c +++ b/gcc/testsuite/c-c++-common/Wmisleading-indentation.c @@ -890,6 +890,8 @@ fn_39 (void) i < 10; i++); foo (i); + + do foo (0); while (flagA); } /* We shouldn't complain about the following function. */ |