Index: decl.c
===================================================================
--- decl.c	(revision 276903)
+++ decl.c	(working copy)
@@ -9328,7 +9328,6 @@ grokfndecl (tree ctype,
 	    }
 	  /* 17.6.3.3.5  */
 	  if (suffix[0] != '_'
-	      && !in_system_header_at (location)
 	      && !current_function_decl && !(friendp && !funcdef_flag))
 	    warning_at (location, OPT_Wliteral_suffix,
 			"literal operator suffixes not preceded by %<_%>"
@@ -10036,8 +10035,6 @@ compute_array_index_type_loc (location_t name_loc,
 	       indicated by the state of complain), so that
 	       another substitution can be found.  */
 	    return error_mark_node;
-	  else if (in_system_header_at (input_location))
-	    /* Allow them in system headers because glibc uses them.  */;
 	  else if (name)
 	    pedwarn (loc, OPT_Wpedantic,
 		     "ISO C++ forbids zero-size array %qD", name);
@@ -11037,7 +11034,7 @@ grokdeclarator (const cp_declarator *declarator,
 	}
       /* Don't pedwarn if the alternate "__intN__" form has been used instead
 	 of "__intN".  */
-      else if (!int_n_alt && pedantic && ! in_system_header_at (input_location))
+      else if (!int_n_alt && pedantic)
 	pedwarn (declspecs->locations[ds_type_spec], OPT_Wpedantic,
 		 "ISO C++ does not support %<__int%d%> for %qs",
 		 int_n_data[declspecs->int_n_idx].bitsize, name);
@@ -12695,10 +12692,7 @@ grokdeclarator (const cp_declarator *declarator,
 	    else
 	      {
 		/* Array is a flexible member.  */
-		if (in_system_header_at (input_location))
-		  /* Do not warn on flexible array members in system
-		     headers because glibc uses them.  */;
-		else if (name)
+		if (name)
 		  pedwarn (id_loc, OPT_Wpedantic,
 			   "ISO C++ forbids flexible array member %qs", name);
 		else
Index: error.c
===================================================================
--- error.c	(revision 276903)
+++ error.c	(working copy)
@@ -4317,10 +4317,7 @@ cp_printer (pretty_printer *pp, text_info *text, c
 void
 maybe_warn_cpp0x (cpp0x_warn_str str)
 {
-  if ((cxx_dialect == cxx98) && !in_system_header_at (input_location))
-    /* We really want to suppress this warning in system headers,
-       because libstdc++ uses variadic templates even when we aren't
-       in C++0x mode. */
+  if (cxx_dialect == cxx98)
     switch (str)
       {
       case CPP0X_INITIALIZER_LISTS:
Index: lambda.c
===================================================================
--- lambda.c	(revision 276903)
+++ lambda.c	(working copy)
@@ -697,8 +697,7 @@ add_default_capture (tree lambda_stack, tree id, t
       /* Warn about deprecated implicit capture of this via [=].  */
       if (cxx_dialect >= cxx2a
 	  && this_capture_p
-	  && LAMBDA_EXPR_DEFAULT_CAPTURE_MODE (lambda) == CPLD_COPY
-	  && !in_system_header_at (LAMBDA_EXPR_LOCATION (lambda)))
+	  && LAMBDA_EXPR_DEFAULT_CAPTURE_MODE (lambda) == CPLD_COPY)
 	{
 	  if (warning_at (LAMBDA_EXPR_LOCATION (lambda), OPT_Wdeprecated,
 			  "implicit capture of %qE via %<[=]%> is deprecated "
Index: parser.c
===================================================================
--- parser.c	(revision 276903)
+++ parser.c	(working copy)
@@ -5364,8 +5364,7 @@ cp_parser_primary_expression (cp_parser *parser,
 	  {
 	    expr = cp_parser_fold_expression (parser, expr);
 	    if (expr != error_mark_node
-		&& cxx_dialect < cxx17
-		&& !in_system_header_at (input_location))
+		&& cxx_dialect < cxx17)
 	      pedwarn (input_location, 0, "fold-expressions only available "
 		       "with %<-std=c++17%> or %<-std=gnu++17%>");
 	  }
@@ -11817,7 +11816,7 @@ cp_parser_selection_statement (cp_parser* parser,
 	  {
 	    cx = true;
 	    cp_token *tok = cp_lexer_consume_token (parser->lexer);
-	    if (cxx_dialect < cxx17 && !in_system_header_at (tok->location))
+	    if (cxx_dialect < cxx17)
 	      pedwarn (tok->location, 0, "%<if constexpr%> only available "
 		       "with %<-std=c++17%> or %<-std=gnu++17%>");
 	  }
@@ -13314,8 +13313,7 @@ cp_parser_toplevel_declaration (cp_parser* parser)
       /* A declaration consisting of a single semicolon is
 	 invalid.  Allow it unless we're being pedantic.  */
       cp_lexer_consume_token (parser->lexer);
-      if (!in_system_header_at (input_location))
-	pedwarn (input_location, OPT_Wpedantic, "extra %<;%>");
+      pedwarn (input_location, OPT_Wpedantic, "extra %<;%>");
     }
   else
     /* Parse the declaration itself.  */
@@ -19193,7 +19191,7 @@ cp_parser_enumerator_list (cp_parser* parser, tree
       /* If the next token is a `}', there is a trailing comma.  */
       if (cp_lexer_next_token_is (parser->lexer, CPP_CLOSE_BRACE))
 	{
-	  if (cxx_dialect < cxx11 && !in_system_header_at (input_location))
+	  if (cxx_dialect < cxx11)
 	    pedwarn (input_location, OPT_Wpedantic,
                      "comma at end of enumerator list");
 	  break;
@@ -19655,8 +19653,7 @@ cp_parser_using_declaration (cp_parser* parser,
   else if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS))
     {
       cp_token *ell = cp_lexer_consume_token (parser->lexer);
-      if (cxx_dialect < cxx17
-	  && !in_system_header_at (ell->location))
+      if (cxx_dialect < cxx17)
 	pedwarn (ell->location, 0,
 		 "pack expansion in using-declaration only available "
 		 "with %<-std=c++17%> or %<-std=gnu++17%>");
@@ -24835,7 +24832,6 @@ cp_parser_member_declaration (cp_parser* parser)
 		  location_t loc
 		    = cp_lexer_peek_token (parser->lexer)->location;
 		  if (cxx_dialect < cxx2a
-		      && !in_system_header_at (loc)
 		      && identifier != NULL_TREE)
 		    pedwarn (loc, 0,
 			     "default member initializers for bit-fields "
@@ -25692,7 +25688,7 @@ cp_parser_exception_specification_opt (cp_parser*
 			 "specifications");
 	  type_id_list = NULL_TREE;
 	}
-      else if (cxx_dialect >= cxx11 && !in_system_header_at (loc))
+      else if (cxx_dialect >= cxx11)
 	warning_at (loc, OPT_Wdeprecated,
 		    "dynamic exception specifications are deprecated in "
 		    "C++11");
@@ -26680,8 +26676,7 @@ cp_parser_std_attribute_spec (cp_parser *parser)
 	  if (attr_ns
 	      && cp_lexer_nth_token_is (parser->lexer, 3, CPP_COLON))
 	    {
-	      if (cxx_dialect < cxx17
-		  && !in_system_header_at (input_location))
+	      if (cxx_dialect < cxx17)
 		pedwarn (input_location, 0,
 			 "attribute using prefix only available "
 			 "with %<-std=c++17%> or %<-std=gnu++17%>");
Index: pt.c
===================================================================
--- pt.c	(revision 276903)
+++ pt.c	(working copy)
@@ -24257,7 +24257,7 @@ do_decl_instantiation (tree decl, tree storage)
     ;
   else if (storage == ridpointers[(int) RID_EXTERN])
     {
-      if (!in_system_header_at (input_location) && (cxx_dialect == cxx98))
+      if (cxx_dialect == cxx98)
 	pedwarn (input_location, OPT_Wpedantic,
 		 "ISO C++ 1998 forbids the use of %<extern%> on explicit "
 		 "instantiations");
@@ -24339,20 +24339,17 @@ do_type_instantiation (tree t, tree storage, tsubs
 
   if (storage != NULL_TREE)
     {
-      if (!in_system_header_at (input_location))
+      if (storage == ridpointers[(int) RID_EXTERN])
 	{
-	  if (storage == ridpointers[(int) RID_EXTERN])
-	    {
-	      if (cxx_dialect == cxx98)
-		pedwarn (input_location, OPT_Wpedantic,
-			 "ISO C++ 1998 forbids the use of %<extern%> on "
-			 "explicit instantiations");
-	    }
-	  else
+	  if (cxx_dialect == cxx98)
 	    pedwarn (input_location, OPT_Wpedantic,
-		     "ISO C++ forbids the use of %qE"
-		     " on explicit instantiations", storage);
+		     "ISO C++ 1998 forbids the use of %<extern%> on "
+		     "explicit instantiations");
 	}
+      else
+	pedwarn (input_location, OPT_Wpedantic,
+		 "ISO C++ forbids the use of %qE"
+		 " on explicit instantiations", storage);
 
       if (storage == ridpointers[(int) RID_INLINE])
 	nomem_p = 1;
Index: typeck.c
===================================================================
--- typeck.c	(revision 276903)
+++ typeck.c	(working copy)
@@ -6533,7 +6533,7 @@ cp_build_unary_op (enum tree_code code, tree xarg,
 		    return error_mark_node;
 		  }
 		/* Otherwise, [depr.incr.bool] says this is deprecated.  */
-		else if (!in_system_header_at (input_location))
+		else
 		  warning (OPT_Wdeprecated, "use of an operand of type %qT "
 			   "in %<operator++%> is deprecated",
 			   boolean_type_node);
