mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-09 15:31:07 +08:00
re PR preprocessor/28435 (-MMD vs not found system header (included from a system header))
[libcpp/ChangeLog] 2009-09-18 Chris Demetriou <cgd@google.com> PR preprocessor/28435: * include/cpplib.h (struct cpp_options): Add new member deps.need_preprocessor_output. * files.c (open_file_failed): If preprocessor output is needed always report an error. [gcc/ChangeLog] 2009-09-19 Chris Demetriou <cgd@google.com> PR preprocessor/28435: * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate to cpplib that the preprocessor output is needed. [gcc/testsuite/ChangeLog] 2009-09-19 Chris Demetriou <cgd@google.com> PR preprocessor/28435: * gcc.dg/cpp/missing-header-MD.c: New test. * gcc.dg/cpp/missing-header-MMD.c: New test. * gcc.dg/cpp/missing-sysheader-MD.c: New test. * gcc.dg/cpp/missing-sysheader-MMD.c: New test. From-SVN: r151879
This commit is contained in:
parent
b5e7280daa
commit
74dc6a1190
@ -1,3 +1,9 @@
|
||||
2009-09-19 Chris Demetriou <cgd@google.com>
|
||||
|
||||
PR preprocessor/28435:
|
||||
* c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
|
||||
to cpplib that the preprocessor output is needed.
|
||||
|
||||
2009-09-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
|
||||
|
@ -343,6 +343,7 @@ c_common_handle_option (size_t scode, const char *arg, int value)
|
||||
case OPT_MD:
|
||||
case OPT_MMD:
|
||||
cpp_opts->deps.style = (code == OPT_MD ? DEPS_SYSTEM: DEPS_USER);
|
||||
cpp_opts->deps.need_preprocessor_output = true;
|
||||
deps_file = arg;
|
||||
break;
|
||||
|
||||
|
@ -1,3 +1,11 @@
|
||||
2009-09-19 Chris Demetriou <cgd@google.com>
|
||||
|
||||
PR preprocessor/28435:
|
||||
* gcc.dg/cpp/missing-header-MD.c: New test.
|
||||
* gcc.dg/cpp/missing-header-MMD.c: New test.
|
||||
* gcc.dg/cpp/missing-sysheader-MD.c: New test.
|
||||
* gcc.dg/cpp/missing-sysheader-MMD.c: New test.
|
||||
|
||||
2009-09-18 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||
|
||||
PR libgfortran/41328
|
||||
|
6
gcc/testsuite/gcc.dg/cpp/missing-header-MD.c
Normal file
6
gcc/testsuite/gcc.dg/cpp/missing-header-MD.c
Normal file
@ -0,0 +1,6 @@
|
||||
/* Test that missing user headers are fatal errors with -MD. */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-MD" } */
|
||||
|
||||
#include "nonexistent.h" /* { dg-error "nonexistent.h" } */
|
||||
/* { dg-message "terminated" "" { target *-*-* } 0 } */
|
6
gcc/testsuite/gcc.dg/cpp/missing-header-MMD.c
Normal file
6
gcc/testsuite/gcc.dg/cpp/missing-header-MMD.c
Normal file
@ -0,0 +1,6 @@
|
||||
/* Test that missing user headers are fatal errors with -MMD. */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-MMD" } */
|
||||
|
||||
#include "nonexistent.h" /* { dg-error "nonexistent.h" } */
|
||||
/* { dg-message "terminated" "" { target *-*-* } 0 } */
|
6
gcc/testsuite/gcc.dg/cpp/missing-sysheader-MD.c
Normal file
6
gcc/testsuite/gcc.dg/cpp/missing-sysheader-MD.c
Normal file
@ -0,0 +1,6 @@
|
||||
/* Test that missing system headers are fatal errors with -MD. */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-MD" } */
|
||||
|
||||
#include <nonexistent.h> /* { dg-error "nonexistent.h" } */
|
||||
/* { dg-message "terminated" "" { target *-*-* } 0 } */
|
6
gcc/testsuite/gcc.dg/cpp/missing-sysheader-MMD.c
Normal file
6
gcc/testsuite/gcc.dg/cpp/missing-sysheader-MMD.c
Normal file
@ -0,0 +1,6 @@
|
||||
/* Test that missing system headers are fatal errors with -MMD. */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-MMD" } */
|
||||
|
||||
#include <nonexistent.h> /* { dg-error "nonexistent.h" } */
|
||||
/* { dg-message "terminated" "" { target *-*-* } 0 } */
|
@ -1,3 +1,11 @@
|
||||
2009-09-18 Chris Demetriou <cgd@google.com>
|
||||
|
||||
PR preprocessor/28435:
|
||||
* include/cpplib.h (struct cpp_options): Add new member
|
||||
deps.need_preprocessor_output.
|
||||
* files.c (open_file_failed): If preprocessor output is needed
|
||||
always report an error.
|
||||
|
||||
2009-09-13 Kai Tietz <kai.tietz@onevision.com>
|
||||
|
||||
* configure.ac: Set for i?86-w64-mingw*
|
||||
|
@ -935,15 +935,28 @@ open_file_failed (cpp_reader *pfile, _cpp_file *file, int angle_brackets)
|
||||
|
||||
errno = file->err_no;
|
||||
if (print_dep && CPP_OPTION (pfile, deps.missing_files) && errno == ENOENT)
|
||||
deps_add_dep (pfile->deps, file->name);
|
||||
{
|
||||
deps_add_dep (pfile->deps, file->name);
|
||||
/* If the preprocessor output (other than dependency information) is
|
||||
being used, we must also flag an error. */
|
||||
if (CPP_OPTION (pfile, deps.need_preprocessor_output))
|
||||
cpp_errno (pfile, CPP_DL_FATAL, file->path);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* If we are outputting dependencies but not for this file then
|
||||
don't error because we can still produce correct output. */
|
||||
if (CPP_OPTION (pfile, deps.style) && ! print_dep)
|
||||
cpp_errno (pfile, CPP_DL_WARNING, file->path);
|
||||
else
|
||||
/* If we are not outputting dependencies, or if we are and dependencies
|
||||
were requested for this file, or if preprocessor output is needed
|
||||
in addition to dependency information, this is an error.
|
||||
|
||||
Otherwise (outputting dependencies but not for this file, and not
|
||||
using the preprocessor output), we can still produce correct output
|
||||
so it's only a warning. */
|
||||
if (CPP_OPTION (pfile, deps.style) == DEPS_NONE
|
||||
|| print_dep
|
||||
|| CPP_OPTION (pfile, deps.need_preprocessor_output))
|
||||
cpp_errno (pfile, CPP_DL_FATAL, file->path);
|
||||
else
|
||||
cpp_errno (pfile, CPP_DL_WARNING, file->path);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -433,6 +433,10 @@ struct cpp_options
|
||||
|
||||
/* If true, no dependency is generated on the main file. */
|
||||
bool ignore_main_file;
|
||||
|
||||
/* If true, intend to use the preprocessor output (e.g., for compilation)
|
||||
in addition to the dependency info. */
|
||||
bool need_preprocessor_output;
|
||||
} deps;
|
||||
|
||||
/* Target-specific features set by the front end or client. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user