re PR preprocessor/28165 (_Pragma GCC system_header broken)
libcpp PR preprocessor/28165: * internal.h (cpp_in_primary_file): New function. * directives.c (do_include_next): Use cpp_in_primary_file. (do_pragma_once): Likewise. (do_pragma_system_header): Likewise. gcc/testsuite PR preprocessor/28165: * gcc.dg/cpp/pr28165.c: New file. From-SVN: r120441
This commit is contained in:
parent
79e6eaeb8f
commit
705e2d28a1
|
@ -1,3 +1,8 @@
|
|||
2007-01-04 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
PR preprocessor/28165:
|
||||
* gcc.dg/cpp/pr28165.c: New file.
|
||||
|
||||
2007-01-03 Josh Conner <jconner@apple.com>
|
||||
|
||||
PR middle-end/29683
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
/* Copyright (C) 2007 Free Software Foundation, Inc. */
|
||||
/* PR preprocessor/28165 */
|
||||
|
||||
/* { dg-do preprocess } */
|
||||
#pragma GCC system_header /* { dg-warning "system_header" "ignored" } */
|
||||
_Pragma ("GCC system_header") /* { dg-warning "system_header" "ignored" } */
|
|
@ -1,3 +1,11 @@
|
|||
2007-01-04 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
PR preprocessor/28165:
|
||||
* internal.h (cpp_in_primary_file): New function.
|
||||
* directives.c (do_include_next): Use cpp_in_primary_file.
|
||||
(do_pragma_once): Likewise.
|
||||
(do_pragma_system_header): Likewise.
|
||||
|
||||
2006-12-29 Ian Lance Taylor <iant@google.com>
|
||||
|
||||
* lex.c (_cpp_clean_line): Add uses of __builtin_expect. Don't
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* CPP Library. (Directive handling.)
|
||||
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
||||
1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||
2007 Free Software Foundation, Inc.
|
||||
Contributed by Per Bothner, 1994-95.
|
||||
Based on CCCP program by Paul Rubin, June 1986
|
||||
Adapted to ANSI C, Richard Stallman, Jan 1987
|
||||
|
@ -772,7 +773,7 @@ do_include_next (cpp_reader *pfile)
|
|||
|
||||
/* If this is the primary source file, warn and use the normal
|
||||
search logic. */
|
||||
if (! pfile->buffer->prev)
|
||||
if (cpp_in_primary_file (pfile))
|
||||
{
|
||||
cpp_error (pfile, CPP_DL_WARNING,
|
||||
"#include_next in primary source file");
|
||||
|
@ -1346,7 +1347,7 @@ do_pragma (cpp_reader *pfile)
|
|||
static void
|
||||
do_pragma_once (cpp_reader *pfile)
|
||||
{
|
||||
if (pfile->buffer->prev == NULL)
|
||||
if (cpp_in_primary_file (pfile))
|
||||
cpp_error (pfile, CPP_DL_WARNING, "#pragma once in main file");
|
||||
|
||||
check_eol (pfile);
|
||||
|
@ -1396,9 +1397,7 @@ do_pragma_poison (cpp_reader *pfile)
|
|||
static void
|
||||
do_pragma_system_header (cpp_reader *pfile)
|
||||
{
|
||||
cpp_buffer *buffer = pfile->buffer;
|
||||
|
||||
if (buffer->prev == 0)
|
||||
if (cpp_in_primary_file (pfile))
|
||||
cpp_error (pfile, CPP_DL_WARNING,
|
||||
"#pragma system_header ignored outside include file");
|
||||
else
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Part of CPP library.
|
||||
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
|
@ -488,6 +488,13 @@ cpp_in_system_header (cpp_reader *pfile)
|
|||
#define CPP_PEDANTIC(PF) CPP_OPTION (PF, pedantic)
|
||||
#define CPP_WTRADITIONAL(PF) CPP_OPTION (PF, warn_traditional)
|
||||
|
||||
static inline int cpp_in_primary_file (cpp_reader *);
|
||||
static inline int
|
||||
cpp_in_primary_file (cpp_reader *pfile)
|
||||
{
|
||||
return pfile->line_table->depth == 1;
|
||||
}
|
||||
|
||||
/* In errors.c */
|
||||
extern int _cpp_begin_message (cpp_reader *, int,
|
||||
source_location, unsigned int);
|
||||
|
|
Loading…
Reference in New Issue