mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 02:50:27 +08:00
re PR c++/18279 (missing function bodies from -fdump-translation-unit)
PR c++/18279 * c-decl.c (c_write_global_declarations): Dump contents of external scope to. * tree-dump.c (dequeue_and_dump): Dump abstract origin of a decl. <TRY_FINALLY_EXPR>, <RETURN_EXPR>, <CASE_LABEL_EXPR>, <LABEL_EXPR>, <GOTO_EXPR>, <SWITCH_EXPR>: Add. (dump_enabled_p): Return TRUE if PHASE is TDI_all and any dump is enabled. Co-Authored-By: Christian Ehrhardt <ehrhardt@mathematik.uni-ulm.de> From-SVN: r101544
This commit is contained in:
parent
ea40ba9c04
commit
7f3b2bdaaf
@ -1,3 +1,15 @@
|
||||
2005-07-02 Gabriel Dos Reis <gdr@integrable-solutions.net>
|
||||
Christian Ehrhardt <ehrhardt@mathematik.uni-ulm.de>
|
||||
|
||||
PR c++/18279
|
||||
* c-decl.c (c_write_global_declarations): Dump contents of
|
||||
external scope to.
|
||||
* tree-dump.c (dequeue_and_dump): Dump abstract origin of a decl.
|
||||
<TRY_FINALLY_EXPR>, <RETURN_EXPR>, <CASE_LABEL_EXPR>, <LABEL_EXPR>,
|
||||
<GOTO_EXPR>, <SWITCH_EXPR>: Add.
|
||||
(dump_enabled_p): Return TRUE if PHASE is TDI_all and any dump
|
||||
is enabled.
|
||||
|
||||
2005-07-03 Joseph S. Myers <joseph@codesourcery.com>
|
||||
|
||||
* c-common.h (GCC_DIAG_STYLE): Define.
|
||||
|
11
gcc/c-decl.c
11
gcc/c-decl.c
@ -7541,6 +7541,17 @@ c_write_global_declarations (void)
|
||||
through wrapup_global_declarations and check_global_declarations. */
|
||||
for (t = all_translation_units; t; t = TREE_CHAIN (t))
|
||||
c_write_global_declarations_1 (BLOCK_VARS (DECL_INITIAL (t)));
|
||||
if (ext_block)
|
||||
{
|
||||
tree tmp = BLOCK_VARS (ext_block);
|
||||
int flags;
|
||||
FILE * stream = dump_begin (TDI_tu, &flags);
|
||||
if (stream && tmp)
|
||||
{
|
||||
dump_node (tmp, flags & ~TDF_SLIM, stream);
|
||||
dump_end (TDI_tu, stream);
|
||||
}
|
||||
}
|
||||
c_write_global_declarations_1 (BLOCK_VARS (ext_block));
|
||||
|
||||
/* Generate functions to call static constructors and destructors
|
||||
|
@ -322,6 +322,8 @@ dequeue_and_dump (dump_info_p di)
|
||||
if (DECL_ASSEMBLER_NAME_SET_P (t)
|
||||
&& DECL_ASSEMBLER_NAME (t) != DECL_NAME (t))
|
||||
dump_child ("mngl", DECL_ASSEMBLER_NAME (t));
|
||||
if (DECL_ABSTRACT_ORIGIN (t))
|
||||
dump_child ("orig", DECL_ABSTRACT_ORIGIN (t));
|
||||
/* And types. */
|
||||
queue_and_dump_type (di, t);
|
||||
dump_child ("scpe", DECL_CONTEXT (t));
|
||||
@ -572,6 +574,11 @@ dequeue_and_dump (dump_info_p di)
|
||||
dump_child ("op 2", TREE_OPERAND (t, 2));
|
||||
break;
|
||||
|
||||
case TRY_FINALLY_EXPR:
|
||||
dump_child ("op 0", TREE_OPERAND (t, 0));
|
||||
dump_child ("op 1", TREE_OPERAND (t, 1));
|
||||
break;
|
||||
|
||||
case CALL_EXPR:
|
||||
dump_child ("fn", TREE_OPERAND (t, 0));
|
||||
dump_child ("args", TREE_OPERAND (t, 1));
|
||||
@ -594,6 +601,10 @@ dequeue_and_dump (dump_info_p di)
|
||||
dump_child ("cond", TREE_OPERAND (t, 0));
|
||||
break;
|
||||
|
||||
case RETURN_EXPR:
|
||||
dump_child ("expr", TREE_OPERAND (t, 0));
|
||||
break;
|
||||
|
||||
case TARGET_EXPR:
|
||||
dump_child ("decl", TREE_OPERAND (t, 0));
|
||||
dump_child ("init", TREE_OPERAND (t, 1));
|
||||
@ -605,6 +616,29 @@ dequeue_and_dump (dump_info_p di)
|
||||
dump_child ("init", TREE_OPERAND (t, 3));
|
||||
break;
|
||||
|
||||
case CASE_LABEL_EXPR:
|
||||
dump_child ("name", CASE_LABEL (t));
|
||||
if (CASE_LOW (t)) {
|
||||
dump_child ("low ", CASE_LOW (t));
|
||||
if (CASE_HIGH (t)) {
|
||||
dump_child ("high", CASE_HIGH (t));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case LABEL_EXPR:
|
||||
dump_child ("name", TREE_OPERAND (t,0));
|
||||
break;
|
||||
case GOTO_EXPR:
|
||||
dump_child ("labl", TREE_OPERAND (t, 0));
|
||||
break;
|
||||
case SWITCH_EXPR:
|
||||
dump_child ("cond", TREE_OPERAND (t, 0));
|
||||
dump_child ("body", TREE_OPERAND (t, 1));
|
||||
if (TREE_OPERAND (t, 2))
|
||||
{
|
||||
dump_child ("labl", TREE_OPERAND (t,2));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
/* There are no additional fields to print. */
|
||||
break;
|
||||
@ -859,13 +893,28 @@ dump_begin (enum tree_dump_index phase, int *flag_ptr)
|
||||
return stream;
|
||||
}
|
||||
|
||||
/* Returns nonzero if tree dump PHASE is enabled. */
|
||||
/* Returns nonzero if tree dump PHASE is enabled. If PHASE is
|
||||
TDI_tree_all, return nonzero if any dump is enabled. */
|
||||
|
||||
int
|
||||
dump_enabled_p (enum tree_dump_index phase)
|
||||
{
|
||||
struct dump_file_info *dfi = get_dump_file_info (phase);
|
||||
return dfi->state;
|
||||
if (phase == TDI_tree_all)
|
||||
{
|
||||
size_t i;
|
||||
for (i = TDI_none + 1; i < (size_t) TDI_end; i++)
|
||||
if (dump_files[i].state)
|
||||
return 1;
|
||||
for (i = 0; i < extra_dump_files_in_use; i++)
|
||||
if (extra_dump_files[i].state)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
struct dump_file_info *dfi = get_dump_file_info (phase);
|
||||
return dfi->state;
|
||||
}
|
||||
}
|
||||
|
||||
/* Returns nonzero if tree dump PHASE has been initialized. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user