Ian Lance Taylor wrote:
The -finstrument-functions options inserts calls to __cyg_profile_func_enter
and __cyg_profile_func_exit into functions and methods.
In particular __cyg_profile_func_exit is called just prior to the
function/method epilogue.
In C++ a method can also terminate due to an exception. This causes
the stack to unwind as the runtime searches for an exception handler.
As the intervening stack frames are unwound, are the related calls
to __cyg_profile_func_exit called, or will those stack frames
end up with an unmatched __cyg_profile_func_enter ?
Try it and see.
I would bet that you will see an unmatched __cyg_profile_func_enter.
I found this bug report:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=2200
and this patch:
http://gcc.gnu.org/ml/gcc-patches/2003-12/msg00959.html
The code appears to have been merged to gcc 4.X but the patch
requires the tree-ssa changes to be viable.
Earl