From 9c62c8735891bd29be0bc379b51b295f2838019a Mon Sep 17 00:00:00 2001
From: Marek Polacek <polacek@redhat.com>
Date: Thu, 18 Aug 2016 10:28:03 +0000
Subject: [PATCH] re PR c/7652 (-Wswitch-break : Warn if a switch case falls
 through)

	PR c/7652
gcc/cp/
	* call.c (add_builtin_candidate): Add gcc_fallthrough.
	* cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise.
	* parser.c (cp_parser_skip_to_end_of_statement): Likewise.
	(cp_parser_cache_defarg): Likewise.
libcpp/
	* pch.c (write_macdef): Add CPP_FALLTHRU.

From-SVN: r239566
---
 gcc/cp/ChangeLog          | 8 ++++++++
 gcc/cp/call.c             | 2 ++
 gcc/cp/cxx-pretty-print.c | 2 ++
 gcc/cp/parser.c           | 4 ++++
 libcpp/ChangeLog          | 5 +++++
 libcpp/pch.c              | 2 ++
 6 files changed, 23 insertions(+)

diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 52965b8cfe08..705a0346452b 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,11 @@
+2016-08-18  Marek Polacek  <polacek@redhat.com>
+
+	PR c/7652
+	* call.c (add_builtin_candidate): Add gcc_fallthrough.
+	* cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise.
+	* parser.c (cp_parser_skip_to_end_of_statement): Likewise.
+	(cp_parser_cache_defarg): Likewise.
+
 2016-08-12  Marek Polacek  <polacek@redhat.com>
 
 	PR c/7652
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 0203cd1c7b26..05f0431b2a5d 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -2544,6 +2544,8 @@ add_builtin_candidate (struct z_candidate **candidates, enum tree_code code,
 	  type2 = ptrdiff_type_node;
 	  break;
 	}
+      /* XXX Really fallthru?  */
+      /* FALLTHRU */
     case MULT_EXPR:
     case TRUNC_DIV_EXPR:
       if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
diff --git a/gcc/cp/cxx-pretty-print.c b/gcc/cp/cxx-pretty-print.c
index 370476c1916e..f4d2a2eef230 100644
--- a/gcc/cp/cxx-pretty-print.c
+++ b/gcc/cp/cxx-pretty-print.c
@@ -142,6 +142,8 @@ pp_cxx_unqualified_id (cxx_pretty_printer *pp, tree t)
 
     case OVERLOAD:
       t = OVL_CURRENT (t);
+      /* XXX Really fallthru?  */
+      /* FALLTHRU */
     case VAR_DECL:
     case PARM_DECL:
     case CONST_DECL:
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 48510d0927fd..690e92846a83 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -3490,6 +3490,8 @@ cp_parser_skip_to_end_of_statement (cp_parser* parser)
 	      cp_lexer_consume_token (parser->lexer);
 	      return;
 	    }
+	  /* XXX Really fallthru?  */
+	  /* FALLTHRU */
 
 	case CPP_OPEN_BRACE:
 	  ++nesting_depth;
@@ -27669,6 +27671,8 @@ cp_parser_cache_defarg (cp_parser *parser, bool nsdmi)
 	      parser->in_template_argument_list_p = saved_italp;
 	      break;
 	    }
+	  /* XXX Really fallthru?  */
+	  /* FALLTHRU */
 	case CPP_CLOSE_PAREN:
 	case CPP_ELLIPSIS:
 	  /* If we run into a non-nested `;', `}', or `]',
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index c049599784b0..e700dfe31e06 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,8 @@
+2016-08-18  Marek Polacek  <polacek@redhat.com>
+
+	PR c/7652
+	* pch.c (write_macdef): Add CPP_FALLTHRU.
+
 2016-08-12  Marek Polacek  <polacek@redhat.com>
 
 	PR c/7652
diff --git a/libcpp/pch.c b/libcpp/pch.c
index fb9696d57694..04064c0af354 100644
--- a/libcpp/pch.c
+++ b/libcpp/pch.c
@@ -55,6 +55,8 @@ write_macdef (cpp_reader *pfile, cpp_hashnode *hn, void *file_p)
     case NT_VOID:
       if (! (hn->flags & NODE_POISONED))
 	return 1;
+      /* XXX Really fallthru?  */
+      /* FALLTHRU */
 
     case NT_MACRO:
       if ((hn->flags & NODE_BUILTIN)
-- 
GitLab