re PR preprocessor/69543 (_Pragma does not apply within macro)

PR preprocessor/69543
	PR c/69558
	* c-pragma.c (handle_pragma_diagnostic): Pass input_location
	instead of loc to control_warning_option.

	* gcc.dg/pr69543.c: New test.
	* gcc.dg/pr69558.c: New test.

From-SVN: r233058
This commit is contained in:
Jakub Jelinek 2016-02-01 23:36:07 +01:00 committed by Jakub Jelinek
parent bf672ee50f
commit e1b81f2ba0
5 changed files with 53 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2016-02-01 Jakub Jelinek <jakub@redhat.com>
PR preprocessor/69543
PR c/69558
* c-pragma.c (handle_pragma_diagnostic): Pass input_location
instead of loc to control_warning_option.
2016-02-01 Nathan Sidwell <nathan@codesourcery.com>
* c.opt (fopenacc-dim=): New option.

View File

@ -817,9 +817,12 @@ handle_pragma_diagnostic(cpp_reader *ARG_UNUSED(dummy))
const char *arg = NULL;
if (cl_options[option_index].flags & CL_JOINED)
arg = option_string + 1 + cl_options[option_index].opt_len;
/* FIXME: input_location isn't the best location here, but it is
what we used to do here before and changing it breaks e.g.
PR69543 and PR69558. */
control_warning_option (option_index, (int) kind,
arg, kind != DK_IGNORED,
loc, lang_mask, &handlers,
input_location, lang_mask, &handlers,
&global_options, &global_options_set,
global_dc);
}

View File

@ -1,3 +1,10 @@
2016-02-01 Jakub Jelinek <jakub@redhat.com>
PR preprocessor/69543
PR c/69558
* gcc.dg/pr69543.c: New test.
* gcc.dg/pr69558.c: New test.
2016-02-01 Uros Bizjak <ubizjak@gmail.com>
PR testsuite/65940

View File

@ -0,0 +1,18 @@
/* PR preprocessor/69543 */
/* { dg-do compile } */
/* { dg-options "-O2 -Wuninitialized" } */
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
_Pragma ("GCC diagnostic push") \
_Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
_Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
_Pragma ("GCC diagnostic pop")
void test (char yylval)
{
char *yyvsp;
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
*++yyvsp = yylval;
YY_IGNORE_MAYBE_UNINITIALIZED_END
}

View File

@ -0,0 +1,17 @@
/* PR c/69558 */
/* { dg-do compile } */
/* { dg-options "-Wdeprecated-declarations" } */
#define A \
_Pragma ("GCC diagnostic push") \
_Pragma ("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
#define B \
_Pragma ("GCC diagnostic pop")
#define C(x) \
A \
static inline void bar (void) { x (); } \
B
__attribute__((deprecated)) void foo (void); /* { dg-bogus "declared here" } */
C (foo) /* { dg-bogus "is deprecated" } */