diff options
author | Richard Henderson <rth@redhat.com> | 2003-01-07 12:14:51 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2003-01-07 12:14:51 -0800 |
commit | 94c040bd69078d4b4605cba9468cd0f9f6ad85d6 (patch) | |
tree | a0848d70667717ed572294aca719c0efc7f03d31 | |
parent | b47ffb8f08896644da2da1afb674e2d5cf3ec175 (diff) | |
download | gcc-94c040bd69078d4b4605cba9468cd0f9f6ad85d6.tar.gz |
* cfganal.c (flow_call_edges_add): Don't crash on noreturn call.
From-SVN: r61007
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cfganal.c | 11 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/20030107-1.c | 5 |
3 files changed, 15 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ac0a80d0747..8acd3995591 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2003-01-07 Richard Henderson <rth@redhat.com> + + * cfganal.c (flow_call_edges_add): Don't crash on noreturn call. + 2003-01-07 Daniel Berlin <dberlin@dberlin.org> * cfg.c: Include alloc-pool.h diff --git a/gcc/cfganal.c b/gcc/cfganal.c index 170ba447315..a7878178fbd 100644 --- a/gcc/cfganal.c +++ b/gcc/cfganal.c @@ -1,6 +1,6 @@ /* Control flow graph analysis code for GNU compiler. Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001 Free Software Foundation, Inc. + 1999, 2000, 2001, 2003 Free Software Foundation, Inc. This file is part of GCC. @@ -322,10 +322,11 @@ flow_call_edges_add (blocks) for (e = bb->succ; e; e = e->succ_next) if (e->dest == EXIT_BLOCK_PTR) - break; - - insert_insn_on_edge (gen_rtx_USE (VOIDmode, const0_rtx), e); - commit_edge_insertions (); + { + insert_insn_on_edge (gen_rtx_USE (VOIDmode, const0_rtx), e); + commit_edge_insertions (); + break; + } } } diff --git a/gcc/testsuite/gcc.dg/20030107-1.c b/gcc/testsuite/gcc.dg/20030107-1.c new file mode 100644 index 00000000000..9264eba701e --- /dev/null +++ b/gcc/testsuite/gcc.dg/20030107-1.c @@ -0,0 +1,5 @@ +/* { dg-do compile } */ +/* { dg-options "-fprofile-arcs" } */ + +extern void bar(void) __attribute__((noreturn)); +int foo (void) { bar(); } |