I'm confused - given the presence of noncontiguous ranges, why would the "first def" be an important property?
Nevertheless, there are many cases where (due to various optimizations) a parameter value is only moved (copied) around, from one register to another one. We should recognize such situation and keep tracking of entry value of such parameter, since the value actually has not changed.
Thanks for working on this.
@vsk Thanks for the comments! Sure, I will try. :)
After timing some more self-hosts it looks like my original numbers which looked
too good to be true sadly are just that. The self-host asan build time reduction
seems correct (-3.5%) but the non-asan builds are much less impacted then first
thought (about -1%). These numbers are more in line with my original expectation.
Added test case in CFE for checking expected LLVM IR emission.
Hi @djtodoro, thanks for the patch as always. I'm curious about the DbgEntryValueMovement field. Could you explain it in a little more detail? At a high level, IIUC, it's used to mark copies of entry values for the purpose of simplifying location lists (i.e. keep an original AT_entry_value location description even if there are copies). Is that correct? Does the approach handle there being multiple copies of an entry value within a block?
Apologies for missing this until now. Our email system keeps dropping stuff sent by Phabricator.
Ah sorry. While preparing this for commit I realized that the CGDebugInfo change is untested. Can you add a Clang test that checks that CFE is emitting the expected LLVM IR?
Address comment about bad decrementing iterator.
Thanks Adrian for review!
Addressing your review comments.
LGTM with updated testcase, thanks!
@dstenb Thanks a lot for your comments!
Thanks for the reviews! I'll merge this shortly.
Rebase (to make Comments a std::vector<std::string>.
With the new approach, by building the GDB 7.11 we confirm that there is no performance regression any more (by using the debug entry values experimental option).
-Split this into unmodifed/modified parameters support
-Clean the code a bit
-Rebasing on the top of the latest changes in the pass