re PR lto/48042 (lto segfaults while building Qt 4.7.2 with -g -flto -fwhole-program)
authorRichard Guenther <rguenther@suse.de>
Fri, 9 Dec 2011 13:49:22 +0000 (13:49 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Fri, 9 Dec 2011 13:49:22 +0000 (13:49 +0000)
2011-12-09  Richard Guenther  <rguenther@suse.de>

PR lto/48042
* tree.c (free_lang_data_in_decl): Remove freeing conditional
on debuginfo level.

* g++.dg/lto/pr48042_0.C: New testcase.

From-SVN: r182163

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/lto/pr48042_0.C [new file with mode: 0644]
gcc/tree.c

index 8f56fbb9ba6ecfb0b7e8ae35029342c9519d45a2..673dea47e0b648a48851cfd262c1723b5336ce12 100644 (file)
@@ -1,3 +1,9 @@
+2011-12-09  Richard Guenther  <rguenther@suse.de>
+
+       PR lto/48042
+       * tree.c (free_lang_data_in_decl): Remove freeing conditional
+       on debuginfo level.
+
 2011-12-09  Joern Rennecke  <joern.rennecke@embecosm.com>
 
        PR middle-end/40154
index 68002fcd5c82780fa8729691c88efb6a80031b99..215465a2175087e3592cea57b288060f01f5f572 100644 (file)
@@ -1,3 +1,8 @@
+2011-12-09  Richard Guenther  <rguenther@suse.de>
+
+       PR lto/48042
+       * g++.dg/lto/pr48042_0.C: New testcase.
+
 2011-12-09  Richard Guenther  <rguenther@suse.de>
 
        PR tree-optimization/51482
diff --git a/gcc/testsuite/g++.dg/lto/pr48042_0.C b/gcc/testsuite/g++.dg/lto/pr48042_0.C
new file mode 100644 (file)
index 0000000..00b3428
--- /dev/null
@@ -0,0 +1,14 @@
+// { dg-lto-do link }
+// { dg-extra-ld-options "-r -nostdlib -g" }
+
+class A {
+    virtual int x() = 0;
+};
+
+class B:public A {
+    int x();
+};
+
+int B::x() {
+}
+
index 4cadc7ef8c4961316f8ec35e76df46d10fc9524b..8f3ac2ee628726b1a072bf3b8df3fa6ac8034006 100644 (file)
@@ -4600,11 +4600,6 @@ free_lang_data_in_decl (tree decl)
   if (TREE_CODE (decl) == FIELD_DECL)
     free_lang_data_in_one_sizepos (&DECL_FIELD_OFFSET (decl));
 
- /* DECL_FCONTEXT is only used for debug info generation.  */
- if (TREE_CODE (decl) == FIELD_DECL
-     && debug_info_level < DINFO_LEVEL_TERSE)
-   DECL_FCONTEXT (decl) = NULL_TREE;
-
  if (TREE_CODE (decl) == FUNCTION_DECL)
     {
       if (gimple_has_body_p (decl))