[lto][patch] Patch to fix multiple C++ streaming issues and a residual problem with preload_common_nodes
Bill Maddox
maddox@google.com
Sat Aug 2 00:08:00 GMT 2008
Here is a revised patch. I fixed up some other instances of extra
spaces before array subscripts in lto-function-in.c, so the patch is a
bit bigger. The most interesting change is the following;
Index: gcc/opts.c
===================================================================
--- gcc/opts.c (revision 138538)
+++ gcc/opts.c (working copy)
@@ -1079,6 +1079,12 @@ decode_options (unsigned int argc, const
flag_really_no_inline = flag_no_inline;
}
+ /* FIXME lto: With -flto, debug information will be incomplete or
+ inaccurate, or worse, may be sufficiently corrupt as to crash the
+ debug info writer. */
+ if (flag_generate_lto && debug_info_level != DINFO_LEVEL_NONE)
+ inform ("-g is presently unsupported with -flto");
+
/* Set flag_no_inline before the post_options () hook. The C front
ends use it to determine tree inlining defaults. FIXME: such
code should be lang-independent when all front ends use tree
@@ -1969,14 +1975,6 @@ common_handle_option (size_t scode, cons
flag_unroll_loops_set = true;
break;
- case OPT_flto:
- /* FIXME: This is most surely the wrong thing to do because it
- will depend on the order of the options on the command line.
- However, if you specify -flto, you must have dwarf2 debugging
- records. */
- set_debug_level (DWARF2_DEBUG, false, "2");
- break;
-
case OPT_g:
set_debug_level (NO_DEBUG, DEFAULT_GDB_EXTENSIONS, arg);
break;
I followed the existing convention for option warnings, rather than modifying
set_debug_level to assure that there would be no option-order dependency
issues.
Also, in reset_type_lang_specfic:
+ if (TREE_CODE (decl) == TYPE_DECL)
+ {
+ /* According to tree.h, the DECL_INITIAL field isn't
+ used for TYPE_DECLs, but in C++, I've seen a TREE_LIST
+ here full of language-specific stuff. Omit it. */
+ DECL_INITIAL (decl) = NULL_TREE;
+ }
And in output_type_decl:
+ /* We expect free_lang_specifics to clear the INITIAL field. */
+ gcc_assert (decl->decl_common.initial == NULL_TREE);
--Bill
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: streamer-c++-patch-08-01.txt
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20080802/165d2e00/attachment.txt>
More information about the Gcc-patches
mailing list