OSDN Git Service

2011-05-18 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 18 May 2011 13:29:24 +0000 (13:29 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 18 May 2011 13:29:24 +0000 (13:29 +0000)
        Backport from mainline
        2011-04-19  Richard Guenther  <rguenther@suse.de>

PR lto/48207
* tree.c (free_lang_data): Do not reset the decl-assembler-name
langhook.

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

        2011-04-21  Richard Guenther  <rguenther@suse.de>

PR lto/48703
* tree.c (free_lang_data_in_decl): Do not zero TREE_TYPE of
DECL_NAME.

* g++.dg/lto/pr48207-2_0.C: New testcase.
* g++.dg/lto/pr48207-3_0.C: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173860 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/lto/pr48207-2_0.C [new file with mode: 0644]
gcc/testsuite/g++.dg/lto/pr48207-3_0.C [new file with mode: 0644]
gcc/testsuite/g++.dg/lto/pr48207_0.C [new file with mode: 0644]
gcc/tree.c

index 0a259c4..426a3e0 100644 (file)
@@ -1,6 +1,21 @@
 2011-05-18  Richard Guenther  <rguenther@suse.de>
 
        Backport from mainline
+       2011-04-19  Richard Guenther  <rguenther@suse.de>
+
+       PR lto/48207
+       * tree.c (free_lang_data): Do not reset the decl-assembler-name
+       langhook.
+
+       2011-04-21  Richard Guenther  <rguenther@suse.de>
+
+       PR lto/48703
+       * tree.c (free_lang_data_in_decl): Do not zero TREE_TYPE of
+       DECL_NAME.
+
+2011-05-18  Richard Guenther  <rguenther@suse.de>
+
+       Backport from mainline
        2011-05-12  Richard Guenther  <rguenther@suse.de>
 
        PR tree-optimization/48172
index 28581a0..25f9804 100644 (file)
@@ -1,6 +1,20 @@
 2011-05-18  Richard Guenther  <rguenther@suse.de>
 
        Backport from mainline
+       2011-04-19  Richard Guenther  <rguenther@suse.de>
+
+       PR lto/48207
+       * g++.dg/lto/pr48207_0.C: New testcase.
+
+       2011-04-21  Richard Guenther  <rguenther@suse.de>
+
+       PR lto/48703
+       * g++.dg/lto/pr48207-2_0.C: New testcase.
+       * g++.dg/lto/pr48207-3_0.C: Likewise.
+
+2011-05-18  Richard Guenther  <rguenther@suse.de>
+
+       Backport from mainline
        2011-05-12  Richard Guenther  <rguenther@suse.de>
 
        PR tree-optimization/48172
diff --git a/gcc/testsuite/g++.dg/lto/pr48207-2_0.C b/gcc/testsuite/g++.dg/lto/pr48207-2_0.C
new file mode 100644 (file)
index 0000000..6801b85
--- /dev/null
@@ -0,0 +1,10 @@
+// { dg-lto-do link }
+// { dg-lto-options { { -flto -g } } }
+
+namespace {
+    typedef struct {
+       int x;
+    } Foo;
+}
+
+int main () {}
diff --git a/gcc/testsuite/g++.dg/lto/pr48207-3_0.C b/gcc/testsuite/g++.dg/lto/pr48207-3_0.C
new file mode 100644 (file)
index 0000000..ef02dda
--- /dev/null
@@ -0,0 +1,12 @@
+// { dg-lto-do link }
+// { dg-lto-options { { -flto -g } } }
+
+void bar(void) {}
+
+void foo(void)
+{
+  typedef enum { ABC } DEF;
+  bar();
+}
+
+int main () {}
diff --git a/gcc/testsuite/g++.dg/lto/pr48207_0.C b/gcc/testsuite/g++.dg/lto/pr48207_0.C
new file mode 100644 (file)
index 0000000..e66cb49
--- /dev/null
@@ -0,0 +1,13 @@
+// { dg-lto-do link }
+// { dg-lto-options { { -flto -g } } }
+
+void bar(int) {}
+
+void foo(void)
+{
+  typedef enum { ABC } DEF;
+  DEF a;
+  bar((int)a);
+}
+
+int main() {}
index 4d6ca36..1c78b61 100644 (file)
@@ -4532,10 +4532,6 @@ free_lang_data_in_decl (tree decl)
   TREE_LANG_FLAG_5 (decl) = 0;
   TREE_LANG_FLAG_6 (decl) = 0;
 
-  /* Identifiers need not have a type.  */
-  if (DECL_NAME (decl))
-    TREE_TYPE (DECL_NAME (decl)) = NULL_TREE;
-
   free_lang_data_in_one_sizepos (&DECL_SIZE (decl));
   free_lang_data_in_one_sizepos (&DECL_SIZE_UNIT (decl));
   if (TREE_CODE (decl) == FIELD_DECL)
@@ -5140,7 +5136,12 @@ free_lang_data (void)
   lang_hooks.callgraph.analyze_expr = NULL;
   lang_hooks.dwarf_name = lhd_dwarf_name;
   lang_hooks.decl_printable_name = gimple_decl_printable_name;
-  lang_hooks.set_decl_assembler_name = lhd_set_decl_assembler_name;
+  /* We do not want the default decl_assembler_name implementation,
+     rather if we have fixed everything we want a wrapper around it
+     asserting that all non-local symbols already got their assembler
+     name and only produce assembler names for local symbols.  Or rather
+     make sure we never call decl_assembler_name on local symbols and
+     devise a separate, middle-end private scheme for it.  */
 
   /* Reset diagnostic machinery.  */
   diagnostic_starter (global_dc) = default_tree_diagnostic_starter;