Page MenuHomePhabricator

nicholas (Nick Lewycky)
User

Projects

User does not belong to any projects.

User Details

User Since
Oct 15 2012, 11:56 PM (340 w, 1 d)

Recent Activity

Tue, Apr 16

nicholas added reviewers for D60356: Accelerate isPotentiallyReachable when a DominatorTree is available.: bruno, asbirlea.

CFG.cpp doesn't have many non-cleanup authors, Bruno once made a change all the way back in 2015 to improve the performance of isPotentiallyReachable. Alina, I've added you since you reviewed my previous change to isPotentiallyReachable when it affected LICM. This series of patches improves performance of isPotentiallyReachable, primary by taking advantage of dominator tree properties.

Tue, Apr 16, 10:17 PM · Restricted Project
nicholas added a child revision for D60755: [NFCI] Improve efficiency of isPotentiallyReachableFromManyDomTree.: D60756: [NFCI] Replace linear scan with bisection..
Tue, Apr 16, 12:53 AM · Restricted Project
nicholas added a parent revision for D60756: [NFCI] Replace linear scan with bisection.: D60755: [NFCI] Improve efficiency of isPotentiallyReachableFromManyDomTree..
Tue, Apr 16, 12:53 AM · Restricted Project
nicholas created D60756: [NFCI] Replace linear scan with bisection..
Tue, Apr 16, 12:53 AM · Restricted Project
nicholas added a child revision for D60753: [NFCI] Split isPotentiallyReachable into two implementations.: D60755: [NFCI] Improve efficiency of isPotentiallyReachableFromManyDomTree..
Tue, Apr 16, 12:49 AM · Restricted Project
nicholas added a child revision for D60754: Add forEachDescendant to DominatorTree.: D60755: [NFCI] Improve efficiency of isPotentiallyReachableFromManyDomTree..
Tue, Apr 16, 12:49 AM · Restricted Project
nicholas added parent revisions for D60755: [NFCI] Improve efficiency of isPotentiallyReachableFromManyDomTree.: D60754: Add forEachDescendant to DominatorTree., D60753: [NFCI] Split isPotentiallyReachable into two implementations..
Tue, Apr 16, 12:49 AM · Restricted Project
nicholas created D60755: [NFCI] Improve efficiency of isPotentiallyReachableFromManyDomTree..
Tue, Apr 16, 12:49 AM · Restricted Project
nicholas created D60754: Add forEachDescendant to DominatorTree..
Tue, Apr 16, 12:47 AM · Restricted Project
nicholas added a parent revision for D60753: [NFCI] Split isPotentiallyReachable into two implementations.: D60752: [NFCI] Use less memory by storing the Loop* as visited instead of storing each BasicBlock* in the block as visited..
Tue, Apr 16, 12:42 AM · Restricted Project
nicholas created D60753: [NFCI] Split isPotentiallyReachable into two implementations..
Tue, Apr 16, 12:42 AM · Restricted Project
nicholas added a child revision for D60752: [NFCI] Use less memory by storing the Loop* as visited instead of storing each BasicBlock* in the block as visited.: D60753: [NFCI] Split isPotentiallyReachable into two implementations..
Tue, Apr 16, 12:42 AM · Restricted Project
nicholas added a parent revision for D60752: [NFCI] Use less memory by storing the Loop* as visited instead of storing each BasicBlock* in the block as visited.: D60357: Improve visited block tracking in isPotentiallyReachable..
Tue, Apr 16, 12:38 AM · Restricted Project
nicholas created D60752: [NFCI] Use less memory by storing the Loop* as visited instead of storing each BasicBlock* in the block as visited..
Tue, Apr 16, 12:38 AM · Restricted Project
nicholas added a child revision for D60357: Improve visited block tracking in isPotentiallyReachable.: D60752: [NFCI] Use less memory by storing the Loop* as visited instead of storing each BasicBlock* in the block as visited..
Tue, Apr 16, 12:38 AM · Restricted Project

Mon, Apr 15

nicholas added a comment to D60659: [InstCombine] Eliminate stores to constant memory.

Why do you think a store through constant would break subtly? For most users I'd expect a store to a constant to correspond with a write to a read-only page causing a loud crash.

I assume you mean before this patch right? If so, then yes and no. It's possible the constant location is in a readonly page, but I have a lot of downstream constant locations which are intermixed with writeable data. I'm sure other frontends might have the same. Your reasoning may hold specifically for global constants though.

Mon, Apr 15, 11:37 AM · Restricted Project

Sat, Apr 13

nicholas added a comment to D60659: [InstCombine] Eliminate stores to constant memory.

The two statements:

We could simply say that the store *is undefined*, and prune the path.

and

The motivating case for this involves a memmove to a buffer which is constant down a path which is dynamically dead.

conspire to make me think that pruning the whole path really is the right thing to do. This might be the only hint the compiler has that the path is dead code.

Sat, Apr 13, 3:18 PM · Restricted Project

Thu, Apr 11

nicholas added inline comments to D60056: Hoist/sink malloc/free's in LICM..
Thu, Apr 11, 12:46 PM · Restricted Project
nicholas updated the diff for D60056: Hoist/sink malloc/free's in LICM..
Thu, Apr 11, 12:45 PM · Restricted Project

Wed, Apr 10

nicholas updated the diff for D60056: Hoist/sink malloc/free's in LICM..
Wed, Apr 10, 11:22 PM · Restricted Project

Sat, Apr 6

nicholas committed rG383419f70782: [NFC] Fix typo in comment. (authored by nicholas).
[NFC] Fix typo in comment.
Sat, Apr 6, 3:05 PM
nicholas committed rL357849: [NFC] Fix typo in comment..
[NFC] Fix typo in comment.
Sat, Apr 6, 3:05 PM
nicholas updated the summary of D60356: Accelerate isPotentiallyReachable when a DominatorTree is available..
Sat, Apr 6, 12:54 AM · Restricted Project
nicholas updated the summary of D60357: Improve visited block tracking in isPotentiallyReachable..
Sat, Apr 6, 12:54 AM · Restricted Project
nicholas updated the summary of D60356: Accelerate isPotentiallyReachable when a DominatorTree is available..
Sat, Apr 6, 12:50 AM · Restricted Project

Fri, Apr 5

nicholas updated the diff for D60357: Improve visited block tracking in isPotentiallyReachable..
Fri, Apr 5, 9:28 PM · Restricted Project
nicholas retitled D60357: Improve visited block tracking in isPotentiallyReachable. from Improve visited block tracking is isPotentiallyReachable. to Improve visited block tracking in isPotentiallyReachable..
Fri, Apr 5, 9:28 PM · Restricted Project
nicholas created D60357: Improve visited block tracking in isPotentiallyReachable..
Fri, Apr 5, 9:22 PM · Restricted Project
nicholas added a child revision for D60356: Accelerate isPotentiallyReachable when a DominatorTree is available.: D60357: Improve visited block tracking in isPotentiallyReachable..
Fri, Apr 5, 9:22 PM · Restricted Project
nicholas added a parent revision for D60357: Improve visited block tracking in isPotentiallyReachable.: D60356: Accelerate isPotentiallyReachable when a DominatorTree is available..
Fri, Apr 5, 9:22 PM · Restricted Project
nicholas created D60356: Accelerate isPotentiallyReachable when a DominatorTree is available..
Fri, Apr 5, 8:39 PM · Restricted Project

Thu, Apr 4

nicholas closed D60171: An unreachable block may have a route to a reachable block, don't fast-path return that it can't..

rL357734

Thu, Apr 4, 4:13 PM · Restricted Project
nicholas committed rGa6ed16c98f50: An unreachable block may have a route to a reachable block, don't fast-path… (authored by nicholas).
An unreachable block may have a route to a reachable block, don't fast-path…
Thu, Apr 4, 4:09 PM
nicholas committed rL357734: An unreachable block may have a route to a reachable block, don't fast-path….
An unreachable block may have a route to a reachable block, don't fast-path…
Thu, Apr 4, 4:08 PM
nicholas updated the summary of D60171: An unreachable block may have a route to a reachable block, don't fast-path return that it can't..
Thu, Apr 4, 12:54 PM · Restricted Project

Wed, Apr 3

nicholas updated the summary of D60171: An unreachable block may have a route to a reachable block, don't fast-path return that it can't..
Wed, Apr 3, 12:20 PM · Restricted Project

Tue, Apr 2

nicholas added inline comments to D60031: Split tailcallelim into tailcallmark and tailcallelim.
Tue, Apr 2, 10:28 PM · Restricted Project
nicholas created D60171: An unreachable block may have a route to a reachable block, don't fast-path return that it can't..
Tue, Apr 2, 7:41 PM · Restricted Project
nicholas updated the diff for D60056: Hoist/sink malloc/free's in LICM..

Fixed creation of invalid IR when the loop exit block we need to insert a free call in, is a catchswitch block.

Tue, Apr 2, 1:31 PM · Restricted Project

Mon, Apr 1

nicholas updated the diff for D60056: Hoist/sink malloc/free's in LICM..
Mon, Apr 1, 7:47 PM · Restricted Project
nicholas added a comment to D60056: Hoist/sink malloc/free's in LICM..

Should I pull it out of hoisting and sinking and into a post-pass like LICM's scalar promotion? Initially I had imagined that it would participate in hoist and sink's queries of whether "are all arguments to this instruction loop invariant (outside the loop)" as hoists instructions iterately, it would hoist malloc like any other instruction. In practice that couldn't happen because the hoist is deferred until sink time.

Mon, Apr 1, 7:45 PM · Restricted Project
nicholas added a comment to D60056: Hoist/sink malloc/free's in LICM..

I've only skimmed through the high level comments so far, so if if any of this is addressed inline, just say so.

I was wondering why you phrased this as a combination of hoisting and sinking as opposed to promotion. We have the scalar promotion path, and the basic transform you're doing feels a lot like promotion. I suspect that many of the legality aspects will be common.

Mon, Apr 1, 7:02 PM · Restricted Project
nicholas committed rGc0ebfbe3f321: Add an optional list of blocks to avoid when looking for a path in… (authored by nicholas).
Add an optional list of blocks to avoid when looking for a path in…
Mon, Apr 1, 6:06 PM
nicholas committed rL357447: Add an optional list of blocks to avoid when looking for a path in….
Add an optional list of blocks to avoid when looking for a path in…
Mon, Apr 1, 6:06 PM
nicholas closed D60085: Add an optional list of blocks to avoid when looking for a path in isPotentiallyReachable..
Mon, Apr 1, 6:06 PM · Restricted Project
nicholas committed rG1e1e212d274c: [NFC] Remove dead parameter "FreeInLoop", fix some typos and trailing… (authored by nicholas).
[NFC] Remove dead parameter "FreeInLoop", fix some typos and trailing…
Mon, Apr 1, 1:42 PM
nicholas committed rL357427: [NFC] Remove dead parameter "FreeInLoop", fix some typos and trailing….
[NFC] Remove dead parameter "FreeInLoop", fix some typos and trailing…
Mon, Apr 1, 1:36 PM
nicholas closed D60084: [NFC] Remove dead parameter "FreeInLoop", fix some typos and trailing whitespace..
Mon, Apr 1, 1:36 PM · Restricted Project
nicholas closed D60082: Not all blocks are reachable from entry. Don't assume they are..

Committed revision 357425.

Mon, Apr 1, 1:13 PM · Restricted Project
nicholas committed rG66d7eb97045e: Not all blocks are reachable from entry. Don't assume they are. (authored by nicholas).
Not all blocks are reachable from entry. Don't assume they are.
Mon, Apr 1, 1:05 PM
nicholas committed rL357425: Not all blocks are reachable from entry. Don't assume they are..
Not all blocks are reachable from entry. Don't assume they are.
Mon, Apr 1, 1:05 PM
nicholas updated the diff for D60056: Hoist/sink malloc/free's in LICM..
Mon, Apr 1, 12:36 PM · Restricted Project
nicholas added inline comments to D60031: Split tailcallelim into tailcallmark and tailcallelim.
Mon, Apr 1, 12:19 PM · Restricted Project
nicholas updated the diff for D60056: Hoist/sink malloc/free's in LICM..
Mon, Apr 1, 12:01 PM · Restricted Project
nicholas updated the summary of D60056: Hoist/sink malloc/free's in LICM..
Mon, Apr 1, 12:01 PM · Restricted Project
nicholas added a child revision for D60084: [NFC] Remove dead parameter "FreeInLoop", fix some typos and trailing whitespace.: D60056: Hoist/sink malloc/free's in LICM..
Mon, Apr 1, 11:55 AM · Restricted Project
nicholas added a child revision for D60085: Add an optional list of blocks to avoid when looking for a path in isPotentiallyReachable.: D60056: Hoist/sink malloc/free's in LICM..
Mon, Apr 1, 11:55 AM · Restricted Project
nicholas added parent revisions for D60056: Hoist/sink malloc/free's in LICM.: D60084: [NFC] Remove dead parameter "FreeInLoop", fix some typos and trailing whitespace., D60085: Add an optional list of blocks to avoid when looking for a path in isPotentiallyReachable..
Mon, Apr 1, 11:55 AM · Restricted Project
nicholas added a child revision for D60082: Not all blocks are reachable from entry. Don't assume they are.: D60085: Add an optional list of blocks to avoid when looking for a path in isPotentiallyReachable..
Mon, Apr 1, 11:55 AM · Restricted Project
nicholas added a parent revision for D60085: Add an optional list of blocks to avoid when looking for a path in isPotentiallyReachable.: D60082: Not all blocks are reachable from entry. Don't assume they are..
Mon, Apr 1, 11:55 AM · Restricted Project
nicholas created D60085: Add an optional list of blocks to avoid when looking for a path in isPotentiallyReachable..
Mon, Apr 1, 11:55 AM · Restricted Project
nicholas added a reviewer for D60084: [NFC] Remove dead parameter "FreeInLoop", fix some typos and trailing whitespace.: asbirlea.
Mon, Apr 1, 11:49 AM · Restricted Project
nicholas created D60084: [NFC] Remove dead parameter "FreeInLoop", fix some typos and trailing whitespace..
Mon, Apr 1, 11:48 AM · Restricted Project
nicholas added a reviewer for D60082: Not all blocks are reachable from entry. Don't assume they are.: asbirlea.
Mon, Apr 1, 11:47 AM · Restricted Project
nicholas created D60082: Not all blocks are reachable from entry. Don't assume they are..
Mon, Apr 1, 11:41 AM · Restricted Project

Sun, Mar 31

nicholas added reviewers for D60056: Hoist/sink malloc/free's in LICM.: asbirlea, george.burgess.iv, reames.
Sun, Mar 31, 10:24 PM · Restricted Project
nicholas created D60056: Hoist/sink malloc/free's in LICM..
Sun, Mar 31, 10:21 PM · Restricted Project

Nov 8 2018

nicholas added a comment to D53556: [Interpreter] Fix out-of-bounds access in ffiInvoke.

Could you commit this patch on my behalf?

Nov 8 2018, 10:34 AM

Oct 23 2018

nicholas accepted D53556: [Interpreter] Fix out-of-bounds access in ffiInvoke.
Oct 23 2018, 12:43 AM

Oct 16 2018

nicholas committed rL344638: Fix typo Registraction --> Registration, and closing link tag..
Fix typo Registraction --> Registration, and closing link tag.
Oct 16 2018, 11:51 AM

Oct 5 2018

nicholas added a comment to D52895: [TailCallElim] Enable marking of calls with byval as tails.

I misspoke, I meant to say please wait for another reviewer. I've been away from LLVM long enough that I don't have enough context to OK patches to land, but I didn't mean that rnk must be the other reviewer. Sorry!

Oct 5 2018, 3:25 PM
nicholas added a comment to D52895: [TailCallElim] Enable marking of calls with byval as tails.

This looks good to me, but please wait for rnk.

Oct 5 2018, 3:23 PM

Oct 4 2018

nicholas added a comment to D52895: [TailCallElim] Enable marking of calls with byval as tails.
In D52895#1255738, @rnk wrote:

Nice!

I don't understand the logical model behind byval, but I'll review the change to TRE under the assumption that the goal of the patch is correct.

You have to hallucinate an implicit memcpy into the call sequence. Its destination is some stack memory allocated during the call sequence not visible from LLVM IR.

Oct 4 2018, 3:16 PM
nicholas added a comment to D52895: [TailCallElim] Enable marking of calls with byval as tails.

I don't understand the logical model behind byval, but I'll review the change to TRE under the assumption that the goal of the patch is correct.

Oct 4 2018, 11:45 AM

Jun 12 2018

nicholas added inline comments to D48100: Append new attributes to the end of an AttributeList..
Jun 12 2018, 3:33 PM

May 21 2018

nicholas added inline comments to D46814: [InstCombine] Fold unfolded masked merge pattern with variable mask!.
May 21 2018, 4:03 PM

Jan 2 2018

nicholas committed rC321665: Suppress undefined-template warnings when the pattern is declared in a system….
Suppress undefined-template warnings when the pattern is declared in a system…
Jan 2 2018, 11:11 AM
nicholas committed rL321665: Suppress undefined-template warnings when the pattern is declared in a system….
Suppress undefined-template warnings when the pattern is declared in a system…
Jan 2 2018, 11:11 AM

Jun 12 2017

nicholas committed rL305239: Revert r301742 which made ExprConstant checking apply to all full-exprs..
Revert r301742 which made ExprConstant checking apply to all full-exprs.
Jun 12 2017, 3:00 PM
nicholas committed rL305233: Revert r303316, a change to ExprConstant to evaluate function arguments..
Revert r303316, a change to ExprConstant to evaluate function arguments.
Jun 12 2017, 2:16 PM

May 17 2017

nicholas committed rL303317: The constant expression evaluator should examine function arguments for non….
The constant expression evaluator should examine function arguments for non…
May 17 2017, 5:10 PM

May 1 2017

nicholas committed rL301891: Revert r301785 (and r301787) because they caused PR32864..
Revert r301785 (and r301787) because they caused PR32864.
May 1 2017, 6:19 PM

Apr 30 2017

nicholas committed rL301787: Fix test that was incorrected merged between patches..
Fix test that was incorrected merged between patches.
Apr 30 2017, 7:33 PM
nicholas committed rL301785: Handle expressions with non-literal types like ignored expressions if we are….
Handle expressions with non-literal types like ignored expressions if we are…
Apr 30 2017, 7:16 PM

Apr 29 2017

nicholas committed rL301742: Remove Sema::CheckForIntOverflow, and instead check all full-expressions..
Remove Sema::CheckForIntOverflow, and instead check all full-expressions.
Apr 29 2017, 2:47 AM

Apr 28 2017

nicholas committed rL301721: ObjCBoxedExpr can't be evaluated by the constant expression evaluator..
ObjCBoxedExpr can't be evaluated by the constant expression evaluator.
Apr 28 2017, 5:20 PM

Apr 27 2017

nicholas committed rL301522: In the expression evaluator, visit the index of an ArraySubscriptExpr even if….
In the expression evaluator, visit the index of an ArraySubscriptExpr even if…
Apr 27 2017, 12:40 AM
nicholas committed rL301520: In the expression evaluator, descend into both the true and false expressions….
In the expression evaluator, descend into both the true and false expressions…
Apr 27 2017, 12:24 AM

Apr 23 2017

nicholas committed rL301138: Fix typo in comment..
Fix typo in comment.
Apr 23 2017, 1:59 PM

Feb 13 2017

nicholas committed rL295006: When the new expr's array size is an ICE, emit it as a constant expression..
When the new expr's array size is an ICE, emit it as a constant expression.
Feb 13 2017, 4:01 PM

Nov 4 2016

nicholas committed rL286022: Creating tags/google/testing/2016-11-04 from r285906.
Creating tags/google/testing/2016-11-04 from r285906
Nov 4 2016, 3:52 PM
nicholas committed rL286023: Updating branches/google/testing to r285906.
Updating branches/google/testing to r285906
Nov 4 2016, 3:51 PM
nicholas committed rL286012: Creating tags/google/testing/2016-11-04 from r285906.
Creating tags/google/testing/2016-11-04 from r285906
Nov 4 2016, 3:00 PM
nicholas committed rL286020: Creating tags/google/testing/2016-11-04 from r285906.
Creating tags/google/testing/2016-11-04 from r285906
Nov 4 2016, 3:00 PM
nicholas committed rL286013: Updating branches/google/testing to r285906.
Updating branches/google/testing to r285906
Nov 4 2016, 3:00 PM
nicholas committed rL286021: Updating branches/google/testing to r285906.
Updating branches/google/testing to r285906
Nov 4 2016, 3:00 PM
nicholas committed rL286019: Updating branches/google/testing to r285906.
Updating branches/google/testing to r285906
Nov 4 2016, 2:42 PM
nicholas committed rL286018: Creating tags/google/testing/2016-11-04 from r285906.
Creating tags/google/testing/2016-11-04 from r285906
Nov 4 2016, 2:41 PM
nicholas committed rL286011: Cleaning up testing branch.
Cleaning up testing branch
Nov 4 2016, 2:36 PM
nicholas committed rL286017: Updating branches/google/testing to r285906.
Updating branches/google/testing to r285906
Nov 4 2016, 2:35 PM