summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0276-2011-05-18-Richard-Guenther-rguenther-suse.de.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0276-2011-05-18-Richard-Guenther-rguenther-suse.de.patch')
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0276-2011-05-18-Richard-Guenther-rguenther-suse.de.patch111
1 files changed, 111 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0276-2011-05-18-Richard-Guenther-rguenther-suse.de.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0276-2011-05-18-Richard-Guenther-rguenther-suse.de.patch
new file mode 100644
index 0000000000..533afe8559
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0276-2011-05-18-Richard-Guenther-rguenther-suse.de.patch
@@ -0,0 +1,111 @@
1From 750d46458c0af423bb1976c7b4bb0a89de10e58f Mon Sep 17 00:00:00 2001
2From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
3Date: Wed, 18 May 2011 13:29:24 +0000
4Subject: [PATCH] 2011-05-18 Richard Guenther <rguenther@suse.de>
5
6 Backport from mainline
7 2011-04-19 Richard Guenther <rguenther@suse.de>
8
9 PR lto/48207
10 * tree.c (free_lang_data): Do not reset the decl-assembler-name
11 langhook.
12
13 * g++.dg/lto/pr48207_0.C: New testcase.
14
15 2011-04-21 Richard Guenther <rguenther@suse.de>
16
17 PR lto/48703
18 * tree.c (free_lang_data_in_decl): Do not zero TREE_TYPE of
19 DECL_NAME.
20
21 * g++.dg/lto/pr48207-2_0.C: New testcase.
22 * g++.dg/lto/pr48207-3_0.C: Likewise.
23
24
25git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173860 138bc75d-0d04-0410-961f-82ee72b054a4
26
27index 28581a0..25f9804 100644
28new file mode 100644
29index 0000000..6801b85
30--- /dev/null
31+++ b/gcc/testsuite/g++.dg/lto/pr48207-2_0.C
32@@ -0,0 +1,10 @@
33+// { dg-lto-do link }
34+// { dg-lto-options { { -flto -g } } }
35+
36+namespace {
37+ typedef struct {
38+ int x;
39+ } Foo;
40+}
41+
42+int main () {}
43diff --git a/gcc/testsuite/g++.dg/lto/pr48207-3_0.C b/gcc/testsuite/g++.dg/lto/pr48207-3_0.C
44new file mode 100644
45index 0000000..ef02dda
46--- /dev/null
47+++ b/gcc/testsuite/g++.dg/lto/pr48207-3_0.C
48@@ -0,0 +1,12 @@
49+// { dg-lto-do link }
50+// { dg-lto-options { { -flto -g } } }
51+
52+void bar(void) {}
53+
54+void foo(void)
55+{
56+ typedef enum { ABC } DEF;
57+ bar();
58+}
59+
60+int main () {}
61diff --git a/gcc/testsuite/g++.dg/lto/pr48207_0.C b/gcc/testsuite/g++.dg/lto/pr48207_0.C
62new file mode 100644
63index 0000000..e66cb49
64--- /dev/null
65+++ b/gcc/testsuite/g++.dg/lto/pr48207_0.C
66@@ -0,0 +1,13 @@
67+// { dg-lto-do link }
68+// { dg-lto-options { { -flto -g } } }
69+
70+void bar(int) {}
71+
72+void foo(void)
73+{
74+ typedef enum { ABC } DEF;
75+ DEF a;
76+ bar((int)a);
77+}
78+
79+int main() {}
80diff --git a/gcc/tree.c b/gcc/tree.c
81index 4d6ca36..1c78b61 100644
82--- a/gcc/tree.c
83+++ b/gcc/tree.c
84@@ -4532,10 +4532,6 @@ free_lang_data_in_decl (tree decl)
85 TREE_LANG_FLAG_5 (decl) = 0;
86 TREE_LANG_FLAG_6 (decl) = 0;
87
88- /* Identifiers need not have a type. */
89- if (DECL_NAME (decl))
90- TREE_TYPE (DECL_NAME (decl)) = NULL_TREE;
91-
92 free_lang_data_in_one_sizepos (&DECL_SIZE (decl));
93 free_lang_data_in_one_sizepos (&DECL_SIZE_UNIT (decl));
94 if (TREE_CODE (decl) == FIELD_DECL)
95@@ -5140,7 +5136,12 @@ free_lang_data (void)
96 lang_hooks.callgraph.analyze_expr = NULL;
97 lang_hooks.dwarf_name = lhd_dwarf_name;
98 lang_hooks.decl_printable_name = gimple_decl_printable_name;
99- lang_hooks.set_decl_assembler_name = lhd_set_decl_assembler_name;
100+ /* We do not want the default decl_assembler_name implementation,
101+ rather if we have fixed everything we want a wrapper around it
102+ asserting that all non-local symbols already got their assembler
103+ name and only produce assembler names for local symbols. Or rather
104+ make sure we never call decl_assembler_name on local symbols and
105+ devise a separate, middle-end private scheme for it. */
106
107 /* Reset diagnostic machinery. */
108 diagnostic_starter (global_dc) = default_tree_diagnostic_starter;
109--
1101.7.0.4
111