diff options
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.patch | 111 |
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 @@ | |||
1 | From 750d46458c0af423bb1976c7b4bb0a89de10e58f Mon Sep 17 00:00:00 2001 | ||
2 | From: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | ||
3 | Date: Wed, 18 May 2011 13:29:24 +0000 | ||
4 | Subject: [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 | |||
25 | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173860 138bc75d-0d04-0410-961f-82ee72b054a4 | ||
26 | |||
27 | index 28581a0..25f9804 100644 | ||
28 | new file mode 100644 | ||
29 | index 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 () {} | ||
43 | diff --git a/gcc/testsuite/g++.dg/lto/pr48207-3_0.C b/gcc/testsuite/g++.dg/lto/pr48207-3_0.C | ||
44 | new file mode 100644 | ||
45 | index 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 () {} | ||
61 | diff --git a/gcc/testsuite/g++.dg/lto/pr48207_0.C b/gcc/testsuite/g++.dg/lto/pr48207_0.C | ||
62 | new file mode 100644 | ||
63 | index 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() {} | ||
80 | diff --git a/gcc/tree.c b/gcc/tree.c | ||
81 | index 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 | -- | ||
110 | 1.7.0.4 | ||
111 | |||