Commit 47580d22 by Joseph Myers Committed by Joseph Myers

re PR preprocessor/15638 (gcc should have option to treat missing headers as fatal)

	PR preprocessor/15638
gcc:
	* c-common.c (c_cpp_error): Handle CPP_DL_FATAL.

gcc/fortran:
	* cpp.c (cb_cpp_error): Handle CPP_DL_FATAL.

gcc/testsuite:
	* gcc.dg/cpp/missing-header-1.c: New test.
	* gcc.dg/cpp/include2.c: Only test #include <>.  Expect
	"compilation terminated" message.
	* gcc.dg/cpp/include2a.c: New test.  Copy of include2.c but only
	test #include "".
	* gcc.dg/pch/counter-2.c, gcc.dg/pch/valid-1.c,
	gcc.dg/pch/valid-2.c, gcc.dg/pch/warn-1.c: Expect "compilation
	terminated" message.

libcpp:
	* files.c (_cpp_find_file): Call open_file_failed after diagnosing
	invalid PCH.
	(open_file_failed): Make error for missing file fatal.
	* include/cpplib.h (CPP_DL_FATAL): Define.

From-SVN: r145341
parent ba4d8f9d
2009-03-31 Joseph Myers <joseph@codesourcery.com>
PR preprocessor/15638
* c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
2009-03-31 Richard Guenther <rguenther@suse.de> 2009-03-31 Richard Guenther <rguenther@suse.de>
PR middle-end/23401 PR middle-end/23401
......
...@@ -8009,6 +8009,9 @@ c_cpp_error (cpp_reader *pfile ATTRIBUTE_UNUSED, int level, ...@@ -8009,6 +8009,9 @@ c_cpp_error (cpp_reader *pfile ATTRIBUTE_UNUSED, int level,
case CPP_DL_NOTE: case CPP_DL_NOTE:
dlevel = DK_NOTE; dlevel = DK_NOTE;
break; break;
case CPP_DL_FATAL:
dlevel = DK_FATAL;
break;
default: default:
gcc_unreachable (); gcc_unreachable ();
} }
......
2009-03-31 Joseph Myers <joseph@codesourcery.com>
PR preprocessor/15638
* cpp.c (cb_cpp_error): Handle CPP_DL_FATAL.
2009-03-30 Steven G. Kargl <kargls@comcast.net> 2009-03-30 Steven G. Kargl <kargls@comcast.net>
PR fortran/38389 PR fortran/38389
......
...@@ -997,6 +997,9 @@ cb_cpp_error (cpp_reader *pfile ATTRIBUTE_UNUSED, int level, ...@@ -997,6 +997,9 @@ cb_cpp_error (cpp_reader *pfile ATTRIBUTE_UNUSED, int level,
case CPP_DL_NOTE: case CPP_DL_NOTE:
dlevel = DK_NOTE; dlevel = DK_NOTE;
break; break;
case CPP_DL_FATAL:
dlevel = DK_FATAL;
break;
default: default:
gcc_unreachable (); gcc_unreachable ();
} }
......
2009-03-31 Joseph Myers <joseph@codesourcery.com>
PR preprocessor/15638
* gcc.dg/cpp/missing-header-1.c: New test.
* gcc.dg/cpp/include2.c: Only test #include <>. Expect
"compilation terminated" message.
* gcc.dg/cpp/include2a.c: New test. Copy of include2.c but only
test #include "".
* gcc.dg/pch/counter-2.c, gcc.dg/pch/valid-1.c,
gcc.dg/pch/valid-2.c, gcc.dg/pch/warn-1.c: Expect "compilation
terminated" message.
2009-03-31 Richard Guenther <rguenther@suse.de> 2009-03-31 Richard Guenther <rguenther@suse.de>
PR middle-end/23401 PR middle-end/23401
......
...@@ -8,9 +8,8 @@ ...@@ -8,9 +8,8 @@
/* Source: Neil Booth, 4 Nov 2000. */ /* Source: Neil Booth, 4 Nov 2000. */
#include <silly\>> /* { dg-error "extra tokens" "" } */ #include <silly\>> /* { dg-error "extra tokens" "" } */
#include "silly\"" /* { dg-error "extra tokens" "" } */
/* These error is No such file or directory, just once. However, this /* These error is No such file or directory, just once. However, this
message is locale-dependent, so don't test for it. */ message is locale-dependent, so don't test for it. */
/* { dg-error "silly" "" { target *-*-* } 10 } */ /* { dg-error "silly" "" { target *-*-* } 10 } */
/* { dg-error "missing" "" { target *-*-* } 11 } */ /* { dg-message "terminated" "" { target *-*-* } 0 } */
/* Copyright (C) 2000 Free Software Foundation, Inc. */
/* { dg-do preprocess } */
/* Tests that #include does not allow the terminating '>' or '"' to be
escaped, as per the standard. */
/* Source: Neil Booth, 4 Nov 2000. */
#include "silly\"" /* { dg-error "extra tokens" "" } */
/* These error is No such file or directory, just once. However, this
message is locale-dependent, so don't test for it. */
/* { dg-error "silly" "" { target *-*-* } 10 } */
/* { dg-error "missing" "" { target *-*-* } 10 } */
/* { dg-message "terminated" "" { target *-*-* } 0 } */
/* Test that missing headers are fatal errors. PR 15638. */
/* { dg-do compile } */
/* { dg-options "" } */
#include "nonexistent.h" /* { dg-error "nonexistent.h" } */
/* { dg-message "terminated" "" { target *-*-* } 0 } */
/* This declaration should not receive any diagnostic. */
foo bar;
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "counter-2.h" /* { dg-warning "not used because `__COUNTER__' is invalid" } */ #include "counter-2.h" /* { dg-warning "not used because `__COUNTER__' is invalid" } */
/* { dg-error "counter-2.h: No such file or directory" "no such file" { target *-*-* } 10 } */ /* { dg-error "counter-2.h: No such file or directory" "no such file" { target *-*-* } 10 } */
/* { dg-error "one or more PCH files were found, but they were invalid" "invalid files" { target *-*-* } 10 } */ /* { dg-error "one or more PCH files were found, but they were invalid" "invalid files" { target *-*-* } 10 } */
/* { dg-message "terminated" "" { target *-*-* } 0 } */
int main(void) int main(void)
{ {
......
...@@ -3,5 +3,6 @@ ...@@ -3,5 +3,6 @@
#include "valid-1.h"/* { dg-warning "created with -gnone, but used with -g" } */ #include "valid-1.h"/* { dg-warning "created with -gnone, but used with -g" } */
/* { dg-error "No such file" "no such file" { target *-*-* } 3 } */ /* { dg-error "No such file" "no such file" { target *-*-* } 3 } */
/* { dg-error "they were invalid" "invalid files" { target *-*-* } 3 } */ /* { dg-error "they were invalid" "invalid files" { target *-*-* } 3 } */
/* { dg-message "terminated" "" { target *-*-* } 0 } */
int x; int x;
...@@ -3,4 +3,5 @@ ...@@ -3,4 +3,5 @@
#include "valid-2.h" /* { dg-warning "settings for -fexceptions do not match" } */ #include "valid-2.h" /* { dg-warning "settings for -fexceptions do not match" } */
/* { dg-error "No such file" "no such file" { target *-*-* } 3 } */ /* { dg-error "No such file" "no such file" { target *-*-* } 3 } */
/* { dg-error "they were invalid" "invalid files" { target *-*-* } 3 } */ /* { dg-error "they were invalid" "invalid files" { target *-*-* } 3 } */
/* { dg-message "terminated" "" { target *-*-* } 0 } */
int x; int x;
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "warn-1.h"/* { dg-warning "not used because .DEFINED_VALUE. is defined" } */ #include "warn-1.h"/* { dg-warning "not used because .DEFINED_VALUE. is defined" } */
/* { dg-error "No such file" "no such file" { target *-*-* } 5 } */ /* { dg-error "No such file" "no such file" { target *-*-* } 5 } */
/* { dg-error "they were invalid" "invalid files" { target *-*-* } 5 } */ /* { dg-error "they were invalid" "invalid files" { target *-*-* } 5 } */
/* { dg-message "terminated" "" { target *-*-* } 0 } */
int main(void) int main(void)
......
2009-03-31 Joseph Myers <joseph@codesourcery.com>
PR preprocessor/15638
* files.c (_cpp_find_file): Call open_file_failed after diagnosing
invalid PCH.
(open_file_failed): Make error for missing file fatal.
* include/cpplib.h (CPP_DL_FATAL): Define.
2009-03-30 Sergiy Vyshnevetskiy <serg@vostok.net> 2009-03-30 Sergiy Vyshnevetskiy <serg@vostok.net>
PR preprocessor/31932: PR preprocessor/31932:
......
/* Part of CPP library. File handling. /* Part of CPP library. File handling.
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1998, Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc. Free Software Foundation, Inc.
Written by Per Bothner, 1994. Written by Per Bothner, 1994.
Based on CCCP program by Paul Rubin, June 1986 Based on CCCP program by Paul Rubin, June 1986
...@@ -488,7 +488,6 @@ _cpp_find_file (cpp_reader *pfile, const char *fname, cpp_dir *start_dir, bool f ...@@ -488,7 +488,6 @@ _cpp_find_file (cpp_reader *pfile, const char *fname, cpp_dir *start_dir, bool f
return file; return file;
} }
open_file_failed (pfile, file, angle_brackets);
if (invalid_pch) if (invalid_pch)
{ {
cpp_error (pfile, CPP_DL_ERROR, cpp_error (pfile, CPP_DL_ERROR,
...@@ -497,6 +496,7 @@ _cpp_find_file (cpp_reader *pfile, const char *fname, cpp_dir *start_dir, bool f ...@@ -497,6 +496,7 @@ _cpp_find_file (cpp_reader *pfile, const char *fname, cpp_dir *start_dir, bool f
cpp_error (pfile, CPP_DL_ERROR, cpp_error (pfile, CPP_DL_ERROR,
"use -Winvalid-pch for more information"); "use -Winvalid-pch for more information");
} }
open_file_failed (pfile, file, angle_brackets);
break; break;
} }
...@@ -942,7 +942,7 @@ open_file_failed (cpp_reader *pfile, _cpp_file *file, int angle_brackets) ...@@ -942,7 +942,7 @@ open_file_failed (cpp_reader *pfile, _cpp_file *file, int angle_brackets)
if (CPP_OPTION (pfile, deps.style) && ! print_dep) if (CPP_OPTION (pfile, deps.style) && ! print_dep)
cpp_errno (pfile, CPP_DL_WARNING, file->path); cpp_errno (pfile, CPP_DL_WARNING, file->path);
else else
cpp_errno (pfile, CPP_DL_ERROR, file->path); cpp_errno (pfile, CPP_DL_FATAL, file->path);
} }
} }
......
...@@ -813,6 +813,8 @@ cpp_num cpp_num_sign_extend (cpp_num, size_t); ...@@ -813,6 +813,8 @@ cpp_num cpp_num_sign_extend (cpp_num, size_t);
#define CPP_DL_ICE 0x04 #define CPP_DL_ICE 0x04
/* An informative note following a warning. */ /* An informative note following a warning. */
#define CPP_DL_NOTE 0x05 #define CPP_DL_NOTE 0x05
/* A fatal error. */
#define CPP_DL_FATAL 0x06
/* Output a diagnostic of some kind. */ /* Output a diagnostic of some kind. */
extern bool cpp_error (cpp_reader *, int, const char *msgid, ...) extern bool cpp_error (cpp_reader *, int, const char *msgid, ...)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment