* infrun.c (handle_inferior_event): Check the current frame ID
authorDaniel Jacobowitz <drow@false.org>
Sat, 19 Aug 2006 03:19:00 +0000 (03:19 +0000)
committerDaniel Jacobowitz <drow@false.org>
Sat, 19 Aug 2006 03:19:00 +0000 (03:19 +0000)
before unwinding to the previous frame.

gdb/ChangeLog
gdb/infrun.c

index 226077b..908e7e4 100644 (file)
@@ -1,5 +1,10 @@
 2006-08-18  Daniel Jacobowitz  <dan@codesourcery.com>
 
+       * infrun.c (handle_inferior_event): Check the current frame ID
+       before unwinding to the previous frame.
+
+2006-08-18  Daniel Jacobowitz  <dan@codesourcery.com>
+
        * dwarf2read.c (quirk_gcc_member_function_pointer): Add GCC PR
        number in a comment.
 
index de97636..1c31a84 100644 (file)
@@ -2368,12 +2368,16 @@ process_event_stop_test:
       return;
     }
 
-  /* Check for subroutine calls.
+  /* Check for subroutine calls.  The check for the current frame
+     equalling the step ID is not necessary - the check of the
+     previous frame's ID is sufficient - but it is a common case and
+     cheaper than checking the previous frame's ID.
 
      NOTE: frame_id_eq will never report two invalid frame IDs as
      being equal, so to get into this block, both the current and
      previous frame must have valid frame IDs.  */
-  if (frame_id_eq (frame_unwind_id (get_current_frame ()), step_frame_id))
+  if (!frame_id_eq (get_frame_id (get_current_frame ()), step_frame_id)
+      && frame_id_eq (frame_unwind_id (get_current_frame ()), step_frame_id))
     {
       CORE_ADDR real_stop_pc;