diff options
Diffstat (limited to 'gcc/cppinit.c')
-rw-r--r-- | gcc/cppinit.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/gcc/cppinit.c b/gcc/cppinit.c index c4f5942..cee7571 100644 --- a/gcc/cppinit.c +++ b/gcc/cppinit.c @@ -1549,7 +1549,6 @@ cpp_handle_option (pfile, argc, argv, ignore) { case 'M': CPP_OPTION (pfile, dump_macros) = dump_only; - CPP_OPTION (pfile, no_output) = 1; break; case 'N': CPP_OPTION (pfile, dump_macros) = dump_names; @@ -1820,6 +1819,21 @@ cpp_post_options (pfile) if (CPP_OPTION (pfile, preprocessed)) pfile->state.prevent_expansion = 1; + /* -dM makes no normal output. This is set here so that -dM -dD + works as expected. */ + if (CPP_OPTION (pfile, dump_macros) == dump_only) + CPP_OPTION (pfile, no_output) = 1; + + /* Disable -dD, -dN and -dI if we should make no normal output + (such as with -M). Allow -M -dM since some software relies on + this. */ + if (CPP_OPTION (pfile, no_output)) + { + if (CPP_OPTION (pfile, dump_macros) != dump_only) + CPP_OPTION (pfile, dump_macros) = dump_none; + CPP_OPTION (pfile, dump_includes) = 0; + } + /* We need to do this after option processing and before cpp_start_read, as cppmain.c relies on the options->no_output to set its callbacks correctly before calling cpp_start_read. */ |