Commit 9a417f11 by Dodji Seketeli Committed by Dodji Seketeli

PR debug/49951 - jumpy stepping at end of scope in C++

gcc/cp/

	PR debug/49951
	* decl.c (cxx_maybe_build_cleanup): Don't set location of the call
	to the destructor.

gcc/testsuite/

	PR debug/49951
	* g++.dg/gcov/gcov-2.C: Adjust.

From-SVN: r182532
parent 08b2f8e6
2011-12-20 Dodji Seketeli <dodji@redhat.com>
PR debug/49951
* decl.c (cxx_maybe_build_cleanup): Don't set location of the call
to the destructor.
2011-12-20 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51612
......
......@@ -13805,8 +13805,17 @@ cxx_maybe_build_cleanup (tree decl, tsubst_flags_t complain)
cleanup = call;
}
/* build_delete sets the location of the destructor call to the
current location, even though the destructor is going to be
called later, at the end of the current scope. This can lead to
a "jumpy" behaviour for users of debuggers when they step around
the end of the block. So let's unset the location of the
destructor call instead. */
if (cleanup != NULL && EXPR_P (cleanup))
SET_EXPR_LOCATION (cleanup, UNKNOWN_LOCATION);
return cleanup;
}
/* When a stmt has been parsed, this function is called. */
......
2011-12-20 Dodji Seketeli <dodji@redhat.com>
PR debug/49951
* g++.dg/gcov/gcov-2.C: Adjust.
2011-12-20 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51612
......
......@@ -20,7 +20,7 @@ private:
void foo()
{
C c; /* count(2) */
C c; /* count(1) */
c.seti (1); /* count(1) */
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment