bd1b81e
2016-01-29  Jakub Jelinek  <jakub@redhat.com>
bd1b81e
bd1b81e
	PR preprocessor/69543
bd1b81e
	PR c/69558
bd1b81e
	* c-pragma.c (handle_pragma_diagnostic): Pass input_location
bd1b81e
	instead of loc to control_warning_option.
bd1b81e
bd1b81e
	* gcc.dg/pr69543.c: New test.
bd1b81e
	* gcc.dg/pr69558.c: New test.
bd1b81e
bd1b81e
--- gcc/c-family/c-pragma.c.jj	2016-01-15 21:57:00.000000000 +0100
bd1b81e
+++ gcc/c-family/c-pragma.c	2016-01-29 18:34:51.743943283 +0100
bd1b81e
@@ -819,7 +819,7 @@ handle_pragma_diagnostic(cpp_reader *ARG
bd1b81e
     arg = option_string + 1 + cl_options[option_index].opt_len;
bd1b81e
   control_warning_option (option_index, (int) kind,
bd1b81e
 			  arg, kind != DK_IGNORED,
bd1b81e
-			  loc, lang_mask, &handlers,
bd1b81e
+			  input_location, lang_mask, &handlers,
bd1b81e
 			  &global_options, &global_options_set,
bd1b81e
 			  global_dc);
bd1b81e
 }
bd1b81e
--- gcc/testsuite/gcc.dg/pr69558.c.jj	2016-01-29 18:43:32.191665058 +0100
bd1b81e
+++ gcc/testsuite/gcc.dg/pr69558.c	2016-01-29 18:40:05.000000000 +0100
bd1b81e
@@ -0,0 +1,17 @@
bd1b81e
+/* PR c/69558 */
bd1b81e
+/* { dg-do compile } */
bd1b81e
+/* { dg-options "-Wdeprecated-declarations" } */
bd1b81e
+
bd1b81e
+#define A \
bd1b81e
+  _Pragma ("GCC diagnostic push") \
bd1b81e
+  _Pragma ("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
bd1b81e
+#define B \
bd1b81e
+  _Pragma ("GCC diagnostic pop")
bd1b81e
+#define C(x) \
bd1b81e
+  A \
bd1b81e
+  static inline void bar (void) { x (); } \
bd1b81e
+  B
bd1b81e
+
bd1b81e
+__attribute__((deprecated)) void foo (void); /* { dg-bogus "declared here" } */
bd1b81e
+
bd1b81e
+C (foo) /* { dg-bogus "is deprecated" } */
bd1b81e
--- gcc/testsuite/gcc.dg/pr69543.c.jj	2016-01-29 18:45:09.520323395 +0100
bd1b81e
+++ gcc/testsuite/gcc.dg/pr69543.c	2016-01-29 18:44:56.000000000 +0100
bd1b81e
@@ -0,0 +1,18 @@
bd1b81e
+/* PR preprocessor/69543 */
bd1b81e
+/* { dg-do compile } */
bd1b81e
+/* { dg-options "-O2 -Wuninitialized" } */
bd1b81e
+
bd1b81e
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
bd1b81e
+    _Pragma ("GCC diagnostic push") \
bd1b81e
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
bd1b81e
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
bd1b81e
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
bd1b81e
+    _Pragma ("GCC diagnostic pop")
bd1b81e
+
bd1b81e
+void test (char yylval)
bd1b81e
+{
bd1b81e
+  char *yyvsp;
bd1b81e
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
bd1b81e
+  *++yyvsp = yylval;
bd1b81e
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
bd1b81e
+}