Page MenuHomePhabricator

jmorse (Jeremy Morse)
User

Projects

User does not belong to any projects.

User Details

User Since
Mar 19 2018, 2:57 AM (79 w, 1 h)

Recent Activity

Mon, Sep 16

jmorse updated subscribers of D67500: [DebugInfo] LiveDebugValues: don't create transfer records for potentially invalid locations.

Adrian wrote:

I don't think this is good.

Mon, Sep 16, 7:28 AM · Restricted Project

Fri, Sep 13

jmorse added inline comments to D67500: [DebugInfo] LiveDebugValues: don't create transfer records for potentially invalid locations.
Fri, Sep 13, 7:44 AM · Restricted Project
jmorse added a comment to D67500: [DebugInfo] LiveDebugValues: don't create transfer records for potentially invalid locations.

I'm assuming that at the beginning all in-locations are unknown and only when all incoming basic blocks have outgoing locations, join() adds new incoming locations to be processed.

Fri, Sep 13, 7:40 AM · Restricted Project

Thu, Sep 12

jmorse added inline comments to D67500: [DebugInfo] LiveDebugValues: don't create transfer records for potentially invalid locations.
Thu, Sep 12, 7:44 AM · Restricted Project
jmorse added a parent revision for D67500: [DebugInfo] LiveDebugValues: don't create transfer records for potentially invalid locations: D67398: [DebugInfo] LiveDebugValues: Move DBG_VALUE creation into VarLoc class.
Thu, Sep 12, 7:43 AM · Restricted Project
jmorse added a child revision for D67398: [DebugInfo] LiveDebugValues: Move DBG_VALUE creation into VarLoc class: D67500: [DebugInfo] LiveDebugValues: don't create transfer records for potentially invalid locations.
Thu, Sep 12, 7:43 AM · Restricted Project
jmorse created D67500: [DebugInfo] LiveDebugValues: don't create transfer records for potentially invalid locations.
Thu, Sep 12, 7:43 AM · Restricted Project
jmorse updated the diff for D67398: [DebugInfo] LiveDebugValues: Move DBG_VALUE creation into VarLoc class.

clang-format patch

Thu, Sep 12, 6:26 AM · Restricted Project
jmorse committed rG0c1e0d52c2e2: Switch "windows" to "system-windows" in some XFAILs (authored by jmorse).
Switch "windows" to "system-windows" in some XFAILs
Thu, Sep 12, 4:21 AM
jmorse committed rL371726: Switch "windows" to "system-windows" in some XFAILs.
Switch "windows" to "system-windows" in some XFAILs
Thu, Sep 12, 4:21 AM

Wed, Sep 11

jmorse added inline comments to D67398: [DebugInfo] LiveDebugValues: Move DBG_VALUE creation into VarLoc class.
Wed, Sep 11, 9:53 AM · Restricted Project
jmorse updated the diff for D67398: [DebugInfo] LiveDebugValues: Move DBG_VALUE creation into VarLoc class.

Address feedback, twiddle various things.

Wed, Sep 11, 9:53 AM · Restricted Project
jmorse added a comment to D67393: [DebugInfo] LiveDebugValues: Defer all DBG_VALUE creation during analysis.

First, DBG_VALUEs aren't necessarily source-level assignments *before* LiveDebugValues either, they update the SSA value that a (fragment) of a source-level variable can be found in, but that SSA value could have been created by the compiler and has not necessarily any relation to a source-level assignment (think about salvageDebugInfo, for example).

Wed, Sep 11, 9:41 AM · Restricted Project
jmorse added a comment to D67393: [DebugInfo] LiveDebugValues: Defer all DBG_VALUE creation during analysis.

Do you think we should avoid this confusion by calling them DBG_LOC or something else after LiveDebugValues to embrace the semantic difference?

Wed, Sep 11, 7:47 AM · Restricted Project

Tue, Sep 10

jmorse added a parent revision for D67398: [DebugInfo] LiveDebugValues: Move DBG_VALUE creation into VarLoc class: D67393: [DebugInfo] LiveDebugValues: Defer all DBG_VALUE creation during analysis.
Tue, Sep 10, 7:17 AM · Restricted Project
jmorse added a child revision for D67393: [DebugInfo] LiveDebugValues: Defer all DBG_VALUE creation during analysis: D67398: [DebugInfo] LiveDebugValues: Move DBG_VALUE creation into VarLoc class.
Tue, Sep 10, 7:17 AM · Restricted Project
jmorse created D67398: [DebugInfo] LiveDebugValues: Move DBG_VALUE creation into VarLoc class.
Tue, Sep 10, 7:17 AM · Restricted Project
jmorse updated the diff for D67393: [DebugInfo] LiveDebugValues: Defer all DBG_VALUE creation during analysis.

(Ninja-edit: this moves transfer-insertion to before flushPendingLocs. flushPendingLocs may manipulate VarLocs that refer to not-yet-inserted DBG_VALUEs as their sources).

Tue, Sep 10, 4:13 AM · Restricted Project
jmorse created D67393: [DebugInfo] LiveDebugValues: Defer all DBG_VALUE creation during analysis.
Tue, Sep 10, 4:09 AM · Restricted Project

Fri, Sep 6

jmorse committed rG5d9cd3b4ca45: [DebugInfo] LiveDebugValues: explicitly terminate overwritten stack locations (authored by jmorse).
[DebugInfo] LiveDebugValues: explicitly terminate overwritten stack locations
Fri, Sep 6, 3:09 AM
jmorse committed rL371193: [DebugInfo] LiveDebugValues: explicitly terminate overwritten stack locations.
[DebugInfo] LiveDebugValues: explicitly terminate overwritten stack locations
Fri, Sep 6, 3:08 AM
jmorse closed D66941: [DebugInfo] LiveDebugValues: explicitly terminate overwritten stack locations.
Fri, Sep 6, 3:08 AM · Restricted Project

Thu, Sep 5

jmorse updated the diff for D66941: [DebugInfo] LiveDebugValues: explicitly terminate overwritten stack locations.

Expand a comment, explaining why we terminate overwritten spill-locations during LiveDebugValues, instead of leaving it until later.

Thu, Sep 5, 10:25 AM · Restricted Project
jmorse added inline comments to D67217: [Debuginfo][Instcombiner] Do not clone dbg.declare in TryToSinkInstruction().
Thu, Sep 5, 7:59 AM · Restricted Project, debug-info

Wed, Sep 4

jmorse added a comment to D64595: [Debuginfo][SROA] Need to handle dbg.value in SROA pass..

Enjoyable leaps in variable-coverage / bytes-coverage on the far right of these graphs:

Wed, Sep 4, 10:05 AM · Restricted Project, debug-info
jmorse added inline comments to D66941: [DebugInfo] LiveDebugValues: explicitly terminate overwritten stack locations.
Wed, Sep 4, 8:40 AM · Restricted Project
jmorse updated the diff for D66941: [DebugInfo] LiveDebugValues: explicitly terminate overwritten stack locations.

Delete a vector that isn't used by anything.

Wed, Sep 4, 8:29 AM · Restricted Project
jmorse updated the diff for D58238: [DebugInfo] MachineSink: Insert undef DBG_VALUEs when sinking instructions, try to forward copies.

Nix an un-necessary else.

Wed, Sep 4, 8:26 AM · Restricted Project
jmorse committed rG337a7cb55eee: [DebugInfo] LiveDebugValues: locations with different exprs should not be merged (authored by jmorse).
[DebugInfo] LiveDebugValues: locations with different exprs should not be merged
Wed, Sep 4, 4:11 AM
jmorse committed rL370877: [DebugInfo] LiveDebugValues: locations with different exprs should not be merged.
[DebugInfo] LiveDebugValues: locations with different exprs should not be merged
Wed, Sep 4, 4:11 AM
jmorse closed D66942: [DebugInfo] LiveDebugValues: locations with different exprs should compare differently.
Wed, Sep 4, 4:11 AM · Restricted Project
jmorse committed rGc8c5f2a84e30: [LiveDebugValues][NFC] Silence an unused variable warning (authored by jmorse).
[LiveDebugValues][NFC] Silence an unused variable warning
Wed, Sep 4, 3:21 AM
jmorse committed rL370870: [LiveDebugValues][NFC] Silence an unused variable warning.
[LiveDebugValues][NFC] Silence an unused variable warning
Wed, Sep 4, 3:16 AM

Tue, Sep 3

jmorse accepted D66467: [Codegen] skip debug instr to avoid code change.

LGTM, thanks for digging into this!

Tue, Sep 3, 2:06 AM · Restricted Project

Mon, Sep 2

jmorse added a comment to D66467: [Codegen] skip debug instr to avoid code change.

Looking good; a couple of extra nits, then it's ready to go.

Mon, Sep 2, 8:59 AM · Restricted Project
jmorse updated the diff for D66941: [DebugInfo] LiveDebugValues: explicitly terminate overwritten stack locations.

Update a comment, we don't terminate variables, instead we close locations.

Mon, Sep 2, 7:20 AM · Restricted Project
jmorse added inline comments to D66942: [DebugInfo] LiveDebugValues: locations with different exprs should compare differently.
Mon, Sep 2, 7:14 AM · Restricted Project
jmorse added inline comments to D58386: [DebugInfo] Pre-RA MachineSink: sink DBG_VALUEs that don't immediately follow the sunk instruction too.
Mon, Sep 2, 7:08 AM · Restricted Project
jmorse updated the diff for D58386: [DebugInfo] Pre-RA MachineSink: sink DBG_VALUEs that don't immediately follow the sunk instruction too.

Revise some comments & assertions.

Mon, Sep 2, 7:02 AM · Restricted Project
jmorse updated the diff for D58238: [DebugInfo] MachineSink: Insert undef DBG_VALUEs when sinking instructions, try to forward copies.

This update simplifies & flattens the copy-forwarding logic as suggested. Rather than trying to select the condition where copy-forwarding is valid, instead continue around the loop whenever a precondition isn't met.

Mon, Sep 2, 6:14 AM · Restricted Project
jmorse added a comment to D66895: [DebugInfo] LiveDebugValues: correctly discriminate between kinds of variable locations.

A case of mistaken identity meant I linked to this review in commit r370648, the real review for that commit is D58450, sorry for that extra noise.

Mon, Sep 2, 5:39 AM · Restricted Project
jmorse closed D58450: [DebugInfo][MachineCSE] Don't try to copy-propagate debuginfo for every COPY seen.

Committed in https://reviews.llvm.org/rL370648

Mon, Sep 2, 5:36 AM · Restricted Project
jmorse committed rG22493f66f168: [DebugInfo] LiveDebugValues: correctly discriminate kinds of variable locations (authored by jmorse).
[DebugInfo] LiveDebugValues: correctly discriminate kinds of variable locations
Mon, Sep 2, 5:28 AM
jmorse committed rL370648: [DebugInfo] LiveDebugValues: correctly discriminate kinds of variable locations.
[DebugInfo] LiveDebugValues: correctly discriminate kinds of variable locations
Mon, Sep 2, 5:27 AM

Fri, Aug 30

jmorse added a comment to D66941: [DebugInfo] LiveDebugValues: explicitly terminate overwritten stack locations.

Are all DBG_VALUEs pointing to spill slots created by LiveDebugValues and is this indicative of a bug elsewhere,

Fri, Aug 30, 7:59 AM · Restricted Project
jmorse added a comment to D66942: [DebugInfo] LiveDebugValues: locations with different exprs should compare differently.

Is there a big drop in variable locations with this (i.e., an improvement in accuracy)?

Fri, Aug 30, 6:15 AM · Restricted Project

Thu, Aug 29

jmorse created D66942: [DebugInfo] LiveDebugValues: locations with different exprs should compare differently.
Thu, Aug 29, 6:57 AM · Restricted Project
jmorse created D66941: [DebugInfo] LiveDebugValues: explicitly terminate overwritten stack locations.
Thu, Aug 29, 6:11 AM · Restricted Project
jmorse committed rGca0e4b368964: [DebugInfo] LiveDebugValues: correctly discriminate kinds of variable locations (authored by jmorse).
[DebugInfo] LiveDebugValues: correctly discriminate kinds of variable locations
Thu, Aug 29, 4:21 AM
jmorse committed rL370334: [DebugInfo] LiveDebugValues: correctly discriminate kinds of variable locations.
[DebugInfo] LiveDebugValues: correctly discriminate kinds of variable locations
Thu, Aug 29, 4:20 AM
jmorse closed D66895: [DebugInfo] LiveDebugValues: correctly discriminate between kinds of variable locations.
Thu, Aug 29, 4:20 AM · Restricted Project
jmorse committed rG313d2ce99932: [DebugInfo] LiveDebugValues should always revisit backedges if it skips them (authored by jmorse).
[DebugInfo] LiveDebugValues should always revisit backedges if it skips them
Thu, Aug 29, 3:55 AM
jmorse committed rL370328: [DebugInfo] LiveDebugValues should always revisit backedges if it skips them.
[DebugInfo] LiveDebugValues should always revisit backedges if it skips them
Thu, Aug 29, 3:52 AM
jmorse closed D66663: [DebugInfo] LiveDebugValues should always revisit backedges if it skips them.
Thu, Aug 29, 3:52 AM · Restricted Project

Wed, Aug 28

jmorse added a comment to D66663: [DebugInfo] LiveDebugValues should always revisit backedges if it skips them.

This patch looks really elegant. Does the removal of the initialization phase have any adverse effect on the performance?

Wed, Aug 28, 10:12 AM · Restricted Project
jmorse added a parent revision for D66895: [DebugInfo] LiveDebugValues: correctly discriminate between kinds of variable locations: D66663: [DebugInfo] LiveDebugValues should always revisit backedges if it skips them.
Wed, Aug 28, 10:09 AM · Restricted Project
jmorse added a child revision for D66663: [DebugInfo] LiveDebugValues should always revisit backedges if it skips them: D66895: [DebugInfo] LiveDebugValues: correctly discriminate between kinds of variable locations.
Wed, Aug 28, 10:09 AM · Restricted Project
jmorse created D66895: [DebugInfo] LiveDebugValues: correctly discriminate between kinds of variable locations.
Wed, Aug 28, 10:08 AM · Restricted Project

Tue, Aug 27

jmorse updated the diff for D66663: [DebugInfo] LiveDebugValues should always revisit backedges if it skips them.

This update removes the "initialisation" phase that was happening in LiveDebugValues, and doing so fixes the original problem I was trying to solve, horray.

Tue, Aug 27, 10:11 AM · Restricted Project

Mon, Aug 26

jmorse added a comment to D66663: [DebugInfo] LiveDebugValues should always revisit backedges if it skips them.

Location of !103 changes in the loop block to constant-zero, which should later invalidate the in-location for the loop through the backedge, like it does in the "foo" function,

When the set out OutLocs changes (and in this case it changes from [crumpets=⊥] to [crumpets=0]) all successor blocks (in this case also the block itself because of the back edge) should be added to worklist automatically. Why isn't this happening?

However, the out-locations of the loop block are not changed as the result of propagation, therefore the loop block is never re-visited.

That I don't understand yet. They change from "no info" -> "some info". What am I missing?

Mon, Aug 26, 7:25 AM · Restricted Project

Aug 23 2019

jmorse committed rG0ae549814693: [DebugInfo] Remove invalidated locations during LiveDebugValues (authored by jmorse).
[DebugInfo] Remove invalidated locations during LiveDebugValues
Aug 23 2019, 9:35 AM
jmorse committed rL369778: [DebugInfo] Remove invalidated locations during LiveDebugValues.
[DebugInfo] Remove invalidated locations during LiveDebugValues
Aug 23 2019, 9:35 AM
jmorse closed D66599: [DebugInfo] Remove invalidated locations during LiveDebugValues.
Aug 23 2019, 9:35 AM · Restricted Project
jmorse created D66663: [DebugInfo] LiveDebugValues should always revisit backedges if it skips them.
Aug 23 2019, 9:28 AM · Restricted Project
jmorse abandoned D66656: [DebugInfo][NFCI] Refactor LiveDebugValues containers to be pass fields.

No problemo

Aug 23 2019, 8:39 AM · Restricted Project
jmorse added a child revision for D66599: [DebugInfo] Remove invalidated locations during LiveDebugValues: D66656: [DebugInfo][NFCI] Refactor LiveDebugValues containers to be pass fields.
Aug 23 2019, 8:12 AM · Restricted Project
jmorse added a parent revision for D66656: [DebugInfo][NFCI] Refactor LiveDebugValues containers to be pass fields: D66599: [DebugInfo] Remove invalidated locations during LiveDebugValues.
Aug 23 2019, 8:12 AM · Restricted Project
jmorse created D66656: [DebugInfo][NFCI] Refactor LiveDebugValues containers to be pass fields.
Aug 23 2019, 8:12 AM · Restricted Project
jmorse updated the diff for D66599: [DebugInfo] Remove invalidated locations during LiveDebugValues.

Remove an unnecessary change.

Aug 23 2019, 2:14 AM · Restricted Project

Aug 22 2019

jmorse added inline comments to D66599: [DebugInfo] Remove invalidated locations during LiveDebugValues.
Aug 22 2019, 9:32 AM · Restricted Project
jmorse created D66599: [DebugInfo] Remove invalidated locations during LiveDebugValues.
Aug 22 2019, 9:22 AM · Restricted Project

Aug 21 2019

jmorse committed rG67443c3c6ec2: [DebugInfo] Avoid dropping location info across block boundaries (authored by jmorse).
[DebugInfo] Avoid dropping location info across block boundaries
Aug 21 2019, 2:23 AM
jmorse committed rL369508: [DebugInfo] Avoid dropping location info across block boundaries.
[DebugInfo] Avoid dropping location info across block boundaries
Aug 21 2019, 2:23 AM
jmorse closed D66412: [DebugInfo][LiveDebugValues] Don't drop variable location tracking data across block boundaries.
Aug 21 2019, 2:23 AM · Restricted Project

Aug 20 2019

jmorse updated the diff for D66412: [DebugInfo][LiveDebugValues] Don't drop variable location tracking data across block boundaries.

Update: I noticed that in moving transferTerminatorInst, I'd changed the "process" method to always return false, so I've removed its return code.

Aug 20 2019, 8:57 AM · Restricted Project
jmorse added a comment to D64595: [Debuginfo][SROA] Need to handle dbg.value in SROA pass..

Adrian wrote:

Stepping back a bit: Is the result of SROA multiple smaller allocas?

If SROA is only creating new allocas, then describing them with dbg.declares should do no harm, since a later call to LowerDbgDeclare would truncate their range by inserting new dbg.values at every load. But if SROA is inserting the load, we do need to make sure that the loaded value is tracked by a dbg.value (potentially in addition to tracking the alloca with a dbg.declare). So I guess my question is, where are loads for the SROAed allocas generated?

Aug 20 2019, 6:30 AM · Restricted Project, debug-info
jmorse updated subscribers of D66467: [Codegen] skip debug instr to avoid code change.

Indeed, this'll need a MIR test for the BranchFolding pass to check for future regressions, and to demonstrate that this patch fixes the bug report. There are some MIR test examples in the llvm/test/CodeGen/MIR/X86 directory.

Aug 20 2019, 4:42 AM · Restricted Project

Aug 19 2019

jmorse updated the diff for D66412: [DebugInfo][LiveDebugValues] Don't drop variable location tracking data across block boundaries.

Adjust comment wordings

Aug 19 2019, 9:27 AM · Restricted Project
jmorse added a comment to D64595: [Debuginfo][SROA] Need to handle dbg.value in SROA pass..

Looking good, and this produces the ~3% increase in variable locations in clang-3.4 builds like the previous revisions did too. It looks like the two xfailed tests are testing for the behaviour you're explicitly disabling: it's probably better to just delete them, as this is a deliberate decision to change that behaviour.

Aug 19 2019, 9:17 AM · Restricted Project, debug-info
jmorse created D66412: [DebugInfo][LiveDebugValues] Don't drop variable location tracking data across block boundaries.
Aug 19 2019, 4:44 AM · Restricted Project
jmorse committed rG176bbd5cde36: [DebugInfo] Make postra sinking of DBG_VALUEs subregister-safe (authored by jmorse).
[DebugInfo] Make postra sinking of DBG_VALUEs subregister-safe
Aug 19 2019, 2:57 AM
jmorse committed rL369247: [DebugInfo] Make postra sinking of DBG_VALUEs subregister-safe.
[DebugInfo] Make postra sinking of DBG_VALUEs subregister-safe
Aug 19 2019, 2:57 AM
jmorse closed D58191: [DebugInfo] Make postra sinking of DBG_VALUEs safe in the presence of subregisters.
Aug 19 2019, 2:57 AM · Restricted Project
jmorse added inline comments to D58191: [DebugInfo] Make postra sinking of DBG_VALUEs safe in the presence of subregisters.
Aug 19 2019, 2:48 AM · Restricted Project
jmorse updated the diff for D58191: [DebugInfo] Make postra sinking of DBG_VALUEs safe in the presence of subregisters.

/Really/ avoid nondeterminism this time.

Aug 19 2019, 2:48 AM · Restricted Project
jmorse committed rGb58ba8aae710: [DebugInfo] Test for variable range un-coalescing (authored by jmorse).
[DebugInfo] Test for variable range un-coalescing
Aug 19 2019, 2:07 AM
jmorse committed rL369243: [DebugInfo] Test for variable range un-coalescing.
[DebugInfo] Test for variable range un-coalescing
Aug 19 2019, 2:06 AM
jmorse closed D66347: [DebugInfo] Test that LiveDebugVariables un-coalesces ranges over block boundaries.
Aug 19 2019, 2:06 AM · Restricted Project

Aug 16 2019

jmorse added a comment to D64595: [Debuginfo][SROA] Need to handle dbg.value in SROA pass..

Sorry for the long delay --

Aug 16 2019, 7:01 AM · Restricted Project, debug-info
jmorse created D66347: [DebugInfo] Test that LiveDebugVariables un-coalesces ranges over block boundaries.
Aug 16 2019, 6:52 AM · Restricted Project
jmorse added a comment to D65368: [DebugInfo] Handle complex expressions of spilt locations in LiveDebugValues.

Thanks for all the reviews!

Aug 16 2019, 3:07 AM · Restricted Project
jmorse committed rG8b593480d33f: [DebugInfo] Handle complex expressions with spills in LiveDebugValues (authored by jmorse).
[DebugInfo] Handle complex expressions with spills in LiveDebugValues
Aug 16 2019, 3:06 AM
jmorse committed rL369092: [DebugInfo] Handle complex expressions with spills in LiveDebugValues.
[DebugInfo] Handle complex expressions with spills in LiveDebugValues
Aug 16 2019, 3:06 AM
jmorse closed D65368: [DebugInfo] Handle complex expressions of spilt locations in LiveDebugValues.
Aug 16 2019, 3:06 AM · Restricted Project

Aug 15 2019

jmorse committed rGc476124bc898: [DebugInfo] Avoid crash from dropped fragments in LiveDebugValues (authored by jmorse).
[DebugInfo] Avoid crash from dropped fragments in LiveDebugValues
Aug 15 2019, 10:52 AM
jmorse committed rL369026: [DebugInfo] Avoid crash from dropped fragments in LiveDebugValues.
[DebugInfo] Avoid crash from dropped fragments in LiveDebugValues
Aug 15 2019, 10:49 AM
jmorse closed D66284: [DebugInfo] Avoid crash from dropped fragments in LiveDebugValues.
Aug 15 2019, 10:48 AM · Restricted Project
jmorse updated the diff for D65368: [DebugInfo] Handle complex expressions of spilt locations in LiveDebugValues.

Rebase onto the crash-fixing patch in D66284. This patch now removes the crash-fixing workaround that salvages fragments from spilt expressions, in favour of a more generalised method to access the original unspilt expression. I've edited the details of that into the patch summary at the top.

Aug 15 2019, 3:31 AM · Restricted Project
jmorse retitled D65368: [DebugInfo] Handle complex expressions of spilt locations in LiveDebugValues from [DebugInfo] LiveDebugValues: Don't drop fragment information when restoring spills to [DebugInfo] Handle complex expressions of spilt locations in LiveDebugValues.
Aug 15 2019, 3:16 AM · Restricted Project
jmorse added a child revision for D66284: [DebugInfo] Avoid crash from dropped fragments in LiveDebugValues: D65368: [DebugInfo] Handle complex expressions of spilt locations in LiveDebugValues.
Aug 15 2019, 3:08 AM · Restricted Project