aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2009-12-12 01:12:55 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2009-12-12 01:12:55 +0000
commit2bcbee3aae8e27021a1f41b77efa965483901825 (patch)
treeece91ba25fcd77e78e57f19a637336eb95e2eb1b
parent19f49d971e5f55477ae3137bc41eb4a528a37f91 (diff)
downloadgcc-2bcbee3aae8e27021a1f41b77efa965483901825.zip
gcc-2bcbee3aae8e27021a1f41b77efa965483901825.tar.gz
gcc-2bcbee3aae8e27021a1f41b77efa965483901825.tar.bz2
tree.c (need_assembler_name_p): Abstract decls do not need an assembler name.
2009-12-12 Richard Guenther <rguenther@suse.de> * tree.c (need_assembler_name_p): Abstract decls do not need an assembler name. * dwarf2out.c (dwarf2out_abstract_function): Preserve DECL_ABSTRACT properly. From-SVN: r155189
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/dwarf2out.c3
-rw-r--r--gcc/tree.c4
3 files changed, 13 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a555f3f..daad249 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2009-12-12 Richard Guenther <rguenther@suse.de>
+
+ * tree.c (need_assembler_name_p): Abstract decls do not need
+ an assembler name.
+ * dwarf2out.c (dwarf2out_abstract_function): Preserve
+ DECL_ABSTRACT properly.
+
2009-12-11 Richard Guenther <rguenther@suse.de>
* lto-streamer-in.c (lto_input_tree_ref): Do not register
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 3e3cf31..ec5298c 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -17434,7 +17434,7 @@ dwarf2out_abstract_function (tree decl)
dw_die_ref old_die;
tree save_fn;
tree context;
- int was_abstract = DECL_ABSTRACT (decl);
+ int was_abstract;
htab_t old_decl_loc_table;
/* Make sure we have the actual abstract inline, not a clone. */
@@ -17466,6 +17466,7 @@ dwarf2out_abstract_function (tree decl)
current_function_decl = decl;
push_cfun (DECL_STRUCT_FUNCTION (decl));
+ was_abstract = DECL_ABSTRACT (decl);
set_decl_abstract_flags (decl, 1);
dwarf2out_decl (decl);
if (! was_abstract)
diff --git a/gcc/tree.c b/gcc/tree.c
index 35bfd68..769b332 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -4273,6 +4273,10 @@ need_assembler_name_p (tree decl)
|| DECL_ASSEMBLER_NAME_SET_P (decl))
return false;
+ /* Abstract decls do not need an assembler name. */
+ if (DECL_ABSTRACT (decl))
+ return false;
+
/* For VAR_DECLs, only static, public and external symbols need an
assembler name. */
if (TREE_CODE (decl) == VAR_DECL