aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2007-02-12 21:01:33 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2007-02-12 21:01:33 +0000
commit6170a99877476a4af173c3a6a27a69590457ab15 (patch)
tree7ba2251e6039eacb4bbf44e7e7ebd743914b4d81 /gcc
parentb9a8f075b650714eaa4a7f182302d8dc715dd50e (diff)
downloadgcc-6170a99877476a4af173c3a6a27a69590457ab15.zip
gcc-6170a99877476a4af173c3a6a27a69590457ab15.tar.gz
gcc-6170a99877476a4af173c3a6a27a69590457ab15.tar.bz2
tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
* tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL. * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on the function, temporarily point the debug interface to the null one. From-SVN: r121861
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cgraphunit.c16
-rw-r--r--gcc/tree.h3
3 files changed, 24 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e7a3bf3..bd541e5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2007-02-12 Eric Botcazou <ebotcazou@adacore.com>
+ * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
+ * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
+ the function, temporarily point the debug interface to the null one.
+
+2007-02-12 Eric Botcazou <ebotcazou@adacore.com>
+
* dwarf2out.c (round_up_to_align): New static function.
(field_byte_offset): Use it to round the offset.
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 2d1ecda..f7274ee 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -984,6 +984,8 @@ cgraph_mark_functions_to_output (void)
static void
cgraph_expand_function (struct cgraph_node *node)
{
+ enum debug_info_type save_write_symbols = NO_DEBUG;
+ const struct gcc_debug_hooks *save_debug_hooks = NULL;
tree decl = node->decl;
/* We ought to not compile any inline clones. */
@@ -994,6 +996,14 @@ cgraph_expand_function (struct cgraph_node *node)
gcc_assert (node->lowered);
+ if (DECL_IGNORED_P (decl))
+ {
+ save_write_symbols = write_symbols;
+ write_symbols = NO_DEBUG;
+ save_debug_hooks = debug_hooks;
+ debug_hooks = &do_nothing_debug_hooks;
+ }
+
/* Generate RTL for the body of DECL. */
lang_hooks.callgraph.expand_function (decl);
@@ -1001,6 +1011,12 @@ cgraph_expand_function (struct cgraph_node *node)
/* ??? Can happen with nested function of extern inline. */
gcc_assert (TREE_ASM_WRITTEN (node->decl));
+ if (DECL_IGNORED_P (decl))
+ {
+ write_symbols = save_write_symbols;
+ debug_hooks = save_debug_hooks;
+ }
+
current_function_decl = NULL;
if (!cgraph_preserve_function_body_p (node->decl))
{
diff --git a/gcc/tree.h b/gcc/tree.h
index c672d94..50b0149 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -2540,7 +2540,8 @@ struct tree_memory_partition_tag GTY(())
(DECL_COMMON_CHECK (NODE)->decl_common.debug_expr_is_from)
/* Nonzero for a given ..._DECL node means that the name of this node should
- be ignored for symbolic debug purposes. */
+ be ignored for symbolic debug purposes. Moreover, for a FUNCTION_DECL,
+ the body of the function should also be ignored. */
#define DECL_IGNORED_P(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.ignored_flag)
/* Nonzero for a given ..._DECL node means that this node represents an