Implementation "step out" plans shouldn't gather the return value.
When, for instance, "step-in" steps into a function that it doesn't want to stop in (e.g. has no debug info) it will push a step-out plan to implement the step out so it can then continue stepping. These step out's don't use the result of the function stepped out of, so they shouldn't spend the time to compute it. llvm-svn: 279540
This commit is contained in:
@@ -46,7 +46,8 @@ ThreadPlanStepOut::ThreadPlanStepOut
|
||||
Vote run_vote,
|
||||
uint32_t frame_idx,
|
||||
LazyBool step_out_avoids_code_without_debug_info,
|
||||
bool continue_to_next_branch
|
||||
bool continue_to_next_branch,
|
||||
bool gather_return_value
|
||||
) :
|
||||
ThreadPlan (ThreadPlan::eKindStepOut, "Step out", thread, stop_vote, run_vote),
|
||||
ThreadPlanShouldStopHere (this),
|
||||
@@ -54,7 +55,8 @@ ThreadPlanStepOut::ThreadPlanStepOut
|
||||
m_return_bp_id (LLDB_INVALID_BREAK_ID),
|
||||
m_return_addr (LLDB_INVALID_ADDRESS),
|
||||
m_stop_others (stop_others),
|
||||
m_immediate_step_from_function(nullptr)
|
||||
m_immediate_step_from_function(nullptr),
|
||||
m_calculate_return_value(gather_return_value)
|
||||
{
|
||||
SetFlagsToDefault();
|
||||
SetupAvoidNoDebug(step_out_avoids_code_without_debug_info);
|
||||
@@ -538,6 +540,9 @@ ThreadPlanStepOut::CalculateReturnValue ()
|
||||
if (m_return_valobj_sp)
|
||||
return;
|
||||
|
||||
if (!m_calculate_return_value)
|
||||
return;
|
||||
|
||||
if (m_immediate_step_from_function != nullptr)
|
||||
{
|
||||
CompilerType return_compiler_type = m_immediate_step_from_function->GetCompilerType().GetFunctionReturnType();
|
||||
|
||||
Reference in New Issue
Block a user