re PR c++/12709 (ICE with __FUNCTION__ and function-try-block)

2004-01-13  Andrew Pinski  <pinskia@physics.uc.edu>

        PR c++/12709
        * c-common.c (finish_fname_decls): Use the chain only if the
        tree is an expr_stmt.

2004-01-13  Andrew Pinski  <pinskia@physics.uc.edu>

        PR c++/12709
        * g++.dg/parse/try-catch-1.C: New test.

From-SVN: r75814
This commit is contained in:
Andrew Pinski 2004-01-13 20:10:07 +00:00 committed by Andrew Pinski
parent 81c740ba1b
commit bfaba7a9c3
4 changed files with 32 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2004-01-13 Andrew Pinski <pinskia@physics.uc.edu>
PR c++/12709
* c-common.c (finish_fname_decls): Use the chain only if the
tree is an expr_stmt.
2004-01-13 Vladimir Makarov <vmakarov@redhat.com>
* rtl.def: Add comment about new option in automata_option.

View File

@ -1053,7 +1053,13 @@ finish_fname_decls (void)
tree *p = &DECL_SAVED_TREE (current_function_decl);
/* Skip the dummy EXPR_STMT and any EH_SPEC_BLOCK. */
while (TREE_CODE (*p) != COMPOUND_STMT)
p = &TREE_CHAIN (*p);
{
if (TREE_CODE (*p) == EXPR_STMT)
p = &TREE_CHAIN (*p);
else
p = &TREE_OPERAND(*p, 0);
}
p = &COMPOUND_BODY (*p);
if (TREE_CODE (*p) == SCOPE_STMT)
p = &TREE_CHAIN (*p);

View File

@ -1,3 +1,8 @@
2004-01-13 Andrew Pinski <pinskia@physics.uc.edu>
PR c++/12709
* g++.dg/parse/try-catch-1.C: New test.
2004-01-13 Arnaud Charlet <charlet@act-europe.fr>
* ada/acats/run_all.sh: Add more verbose output in acats.log

View File

@ -0,0 +1,14 @@
// Test case from: <ncm-nospam@cantrip.org>
// Reduced by <bangerth@dealii.org>
// The problem was that g++ was ICE because
// it was deferring an NULL pointer because
// it should have been taking the operand 1
// instead of the chain in finish_fname_decls.
void fun()
try
{
__FUNCTION__;
}
catch (...) {}