The driver amends assembler options with for example --gdwarf-5 when debugging is enabled but the check for that does not consider the effect of -gtoggle which is not handled in the common option machinery. The following alters debug_info_level according to -gtoggle mimicing what process_options later does in the compiler.
This in particular avoids changing of the cc1-checksum with every bootstrap (debug) cycle as we compute that from stage2 where we use -g -gtoggle but with --gdwarf-5 and no debug info from the compiler the assembler will fill the line table with the temporary assembler file names. Bootstrap and regtest pending on x86_64-unknown-linux-gnu, OK? I've sofar verified the patch has the desired effect on --gdwarf-5 passing to the assembler for gcc -c t.c, gcc -c t.c -gtoggle, gcc -c t.c -g -gtoggle and gcc -c t.c -g Thanks, Richard. 2021-07-09 Richard Biener <rguent...@suse.de> PR driver/101383 * gcc.c (process_command): Process -gtoggle like process_options would after parsing options. --- gcc/gcc.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gcc/gcc.c b/gcc/gcc.c index 36a88fc99b0..6c7a4847c43 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -4924,6 +4924,16 @@ process_command (unsigned int decoded_options_count, #endif } + /* Handle -gtoggle as it would later in toplev.c:process_options to + make the debug-level-gt spec function work as expected. */ + if (flag_gtoggle) + { + if (debug_info_level == DINFO_LEVEL_NONE) + debug_info_level = DINFO_LEVEL_NORMAL; + else + debug_info_level = DINFO_LEVEL_NONE; + } + if (output_file && strcmp (output_file, "-") != 0 && strcmp (output_file, HOST_BIT_BUCKET) != 0) -- 2.26.2