2004-11-15 Dale Johannesen <dalej@apple.com>
authordalej <dalej@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 16 Nov 2004 01:26:00 +0000 (01:26 +0000)
committerdalej <dalej@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 16 Nov 2004 01:26:00 +0000 (01:26 +0000)
        * profile.c (compute_branch_probabilities):  Prevent
        crash with EH in RTL-based profiling.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@90711 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/profile.c

index 5c50807..eec443f 100644 (file)
@@ -1,3 +1,8 @@
+2004-11-15  Dale Johannesen  <dalej@apple.com>
+
+       * profile.c (compute_branch_probabilities):  Prevent
+       crash with EH in RTL-based profiling.
+
 2004-11-16  Kazu Hirata  <kazu@cs.umass.edu>
 
        * tree-cfg.c (verify_expr): Replace TREE_OPERAND with
index 93d79d0..318defd 100644 (file)
@@ -569,10 +569,13 @@ compute_branch_probabilities (void)
            }
        }
       /* Otherwise try to preserve the existing REG_BR_PROB probabilities
-         tree based profile guessing put into code.  */
+         tree based profile guessing put into code.  BB can be the
+        ENTRY_BLOCK, and it can have multiple (fake) successors in
+        EH cases, but it still has no code; don't crash in this case.  */
       else if (profile_status == PROFILE_ABSENT
               && !ir_type ()
               && EDGE_COUNT (bb->succs) > 1
+              && BB_END (bb)
               && (note = find_reg_note (BB_END (bb), REG_BR_PROB, 0)))
        {
          int prob = INTVAL (XEXP (note, 0));