Commit 74dc6a11 by Chris Demetriou Committed by Chris Demetriou

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
parent b5e7280d
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;
......
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
......
/* 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 } */
/* 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 } */
/* 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 } */
/* 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 } */
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. */
......
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