aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel1@de.ibm.com>2005-12-18 15:44:00 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2005-12-18 15:44:00 +0000
commit6a60530dd6117831168a4bb9ea402d14667d9c36 (patch)
treea730c9292989135393a7c3907a0968ce58f61106 /gcc
parente7f79e123c1536f13c4fb2196ad08067f0b256fb (diff)
downloadgcc-6a60530dd6117831168a4bb9ea402d14667d9c36.zip
gcc-6a60530dd6117831168a4bb9ea402d14667d9c36.tar.gz
gcc-6a60530dd6117831168a4bb9ea402d14667d9c36.tar.bz2
tree-cfg.c (tree_flow_call_edges_add): Check for empty basic blocks.
2005-12-18 Andreas Krebbel <krebbel1@de.ibm.com> * tree-cfg.c (tree_flow_call_edges_add): Check for empty basic blocks. * gcc.dg/20051201-1.c: New test. From-SVN: r108755
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/20051201-1.c26
-rw-r--r--gcc/tree-cfg.c2
4 files changed, 35 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5a5a591..6e4f1ff 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2005-12-18 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ * tree-cfg.c (tree_flow_call_edges_add): Check for empty basic blocks.
+
2005-12-18 Steven Bosscher <stevenb@suse.de>
* gcse.c (gcse_main, bypass_jumps): Fix non-GNU-isms from
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5ecdf09..87e1de6 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2005-12-18 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ * gcc.dg/20051201-1.c: New test.
+
2005-12-18 Paul Thomas <pault@gcc.gnu.org>
PR fortran/25018
diff --git a/gcc/testsuite/gcc.dg/20051201-1.c b/gcc/testsuite/gcc.dg/20051201-1.c
new file mode 100644
index 0000000..8e77986
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/20051201-1.c
@@ -0,0 +1,26 @@
+/* This failed with profiling due to a missing check in
+ tree_flow_call_edges_add. */
+
+/* { dg-do compile } */
+/* { dg-options "-O1 -fprofile-generate" } */
+
+static __attribute__ ((always_inline)) void
+baz ()
+{
+}
+
+static __attribute__ ((always_inline)) int
+bar ()
+{
+ out:
+ baz ();
+ goto out;
+}
+
+int
+foo ()
+{
+ long res;
+
+ res = bar ();
+}
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 3f925b3..d2e688e 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -4769,7 +4769,7 @@ tree_flow_call_edges_add (sbitmap blocks)
if (!bsi_end_p (bsi))
t = bsi_stmt (bsi);
- if (need_fake_edge_p (t))
+ if (t && need_fake_edge_p (t))
{
edge e;