lto-opts.c (lto_write_options): Stream -g when debug is enabled.
authorRichard Biener <rguenther@suse.de>
Wed, 11 Sep 2019 11:20:35 +0000 (11:20 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 11 Sep 2019 11:20:35 +0000 (11:20 +0000)
2019-09-11  Richard Biener  <rguenther@suse.de>

* lto-opts.c (lto_write_options): Stream -g when debug is enabled.
* lto-wrapper.c (merge_and_complain): Pick up -g.
(append_compiler_options): Likewise.
(run_gcc): Re-instantiate handling -g0 at link-time.
* doc/invoke.texi (flto): Document debug info generation.

From-SVN: r275640

gcc/ChangeLog
gcc/doc/invoke.texi
gcc/lto-opts.c
gcc/lto-wrapper.c

index 21c247b88779815d2ad8bb9413a13529f41e2568..85bb9ba23fa2ef187d016f4ad8b69c750c64788b 100644 (file)
@@ -1,3 +1,11 @@
+2019-09-11  Richard Biener  <rguenther@suse.de>
+
+       * lto-opts.c (lto_write_options): Stream -g when debug is enabled.
+       * lto-wrapper.c (merge_and_complain): Pick up -g.
+       (append_compiler_options): Likewise.
+       (run_gcc): Re-instantiate handling -g0 at link-time.
+       * doc/invoke.texi (flto): Document debug info generation.
+
 2019-09-11  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/90387
index 234c1b7cadf9838c5b6d186a1a920174b16b4a8a..6e91a66c9479b2acc5feaa5897d31079c165b85c 100644 (file)
@@ -10339,6 +10339,14 @@ conflicting translation units.  Specifically
 precedence; and for example @option{-ffp-contract=off} takes precedence
 over @option{-ffp-contract=fast}.  You can override them at link time.
 
+To enable debug info generation you need to supply @option{-g} at
+compile-time.  If any of the input files at link time were built
+with debug info generation enabled the link will enable debug info
+generation as well.  Any elaborate debug info settings
+like the dwarf level @option{-gdwarf-5} need to be explicitely repeated
+at the linker command line and mixing different settings in different
+translation units is discouraged.
+
 If LTO encounters objects with C linkage declared with incompatible
 types in separate translation units to be linked together (undefined
 behavior according to ISO C99 6.2.7), a non-fatal diagnostic may be
index 494d9c27a8bd757b3136f888fdedfe019417ac97..0e9f24e118990e0b6092f6f7ac336e3f3fbb60e0 100644 (file)
@@ -94,6 +94,10 @@ lto_write_options (void)
                                      : "-fno-pie");
     }
 
+  /* If debug info is enabled append -g.  */
+  if (debug_info_level > DINFO_LEVEL_NONE)
+    append_to_collect_gcc_options (&temporary_obstack, &first_p, "-g");
+
   /* Append options from target hook and store them to offload_lto section.  */
   if (lto_stream_offload_p)
     {
index 5423adb1a9a9e310a392d2e4ce6bb64dab4fa99c..9a7bbd0c02226eba74275d048ac84a921bf12c5b 100644 (file)
@@ -265,6 +265,7 @@ merge_and_complain (struct cl_decoded_option **decoded_options,
        case OPT_fshow_column:
        case OPT_fcommon:
        case OPT_fgnu_tm:
+       case OPT_g:
          /* Do what the old LTO code did - collect exactly one option
             setting per OPT code, we pick the first we encounter.
             ???  This doesn't make too much sense, but when it doesn't
@@ -617,6 +618,7 @@ append_compiler_options (obstack *argv_obstack, struct cl_decoded_option *opts,
        case OPT_fopenacc:
        case OPT_fopenacc_dim_:
        case OPT_foffload_abi_:
+       case OPT_g:
        case OPT_O:
        case OPT_Ofast:
        case OPT_Og:
@@ -1399,6 +1401,10 @@ run_gcc (unsigned argc, char *argv[])
          linker_output_rel = !strcmp (option->arg, "rel");
          break;
 
+       case OPT_g:
+         /* Recognize -g0.  */
+         skip_debug = option->arg && !strcmp (option->arg, "0");
+         break;
 
        default:
          break;