diff options
author | Andrew Pinski <pinskia@physics.uc.edu> | 2004-01-13 20:10:07 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2004-01-13 12:10:07 -0800 |
commit | bfaba7a9c354ab688a552596cbf37d1c21081c36 (patch) | |
tree | 3d2acf96009bba59ab9e8c7bfadf7699055059b1 /gcc/c-common.c | |
parent | 81c740ba1bfd1332d22b8f597da1522467ef6479 (diff) | |
download | gcc-bfaba7a9c354ab688a552596cbf37d1c21081c36.zip gcc-bfaba7a9c354ab688a552596cbf37d1c21081c36.tar.gz gcc-bfaba7a9c354ab688a552596cbf37d1c21081c36.tar.bz2 |
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
Diffstat (limited to 'gcc/c-common.c')
-rw-r--r-- | gcc/c-common.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/c-common.c b/gcc/c-common.c index e12a9c0..6445113 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -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); |