Fix -Wmisleading indentation false-positive for do-while statement
authorppalka <ppalka@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 10 Jan 2016 16:39:39 +0000 (16:39 +0000)
committerppalka <ppalka@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 10 Jan 2016 16:39:39 +0000 (16:39 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232202 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/c-family/ChangeLog
gcc/c-family/c-indentation.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/Wmisleading-indentation.c

index a2743d8..d8282d9 100644 (file)
@@ -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
index 3c09336..cd9637d 100644 (file)
@@ -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.
index f233bb9..615a527 100644 (file)
@@ -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
index 491291c..25db8fe 100644 (file)
@@ -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.  */