anna (Anna Thomas)
User

Projects

User does not belong to any projects.

User Details

User Since
Mar 30 2016, 11:13 AM (115 w, 6 d)

Recent Activity

Thu, Jun 14

anna added a comment to D47441: SafepointIRVerifier should ignore dead blocks and dead edges.

Generally LGTM. pls wait for Artur's comments (if any).

Thu, Jun 14, 7:33 AM
anna added inline comments to D47441: SafepointIRVerifier should ignore dead blocks and dead edges.
Thu, Jun 14, 7:13 AM

Thu, Jun 7

anna added inline comments to D47441: SafepointIRVerifier should ignore dead blocks and dead edges.
Thu, Jun 7, 8:31 AM
anna added inline comments to D47441: SafepointIRVerifier should ignore dead blocks and dead edges.
Thu, Jun 7, 8:28 AM

Tue, Jun 5

anna added a comment to D47441: SafepointIRVerifier should ignore dead blocks and dead edges.

Hi Yevgeny, this looks close to commit. Comments inline.

Tue, Jun 5, 12:07 PM

Tue, May 29

anna added inline comments to D47441: SafepointIRVerifier should ignore dead blocks and dead edges.
Tue, May 29, 10:58 AM

Wed, May 23

anna accepted D47197: [MustExecute] Fix a debug invariant issue in isGuaranteedToExecute().

LGTM.

Wed, May 23, 7:10 AM

Apr 3 2018

anna accepted D44001: [SCEV] Prove implications for SCEVUnknown Phis.

LGTM

Apr 3 2018, 6:59 AM
anna added inline comments to D44001: [SCEV] Prove implications for SCEVUnknown Phis.
Apr 3 2018, 6:59 AM

Apr 2 2018

anna added inline comments to D44001: [SCEV] Prove implications for SCEVUnknown Phis.
Apr 2 2018, 8:47 AM

Mar 28 2018

anna added a comment to D44001: [SCEV] Prove implications for SCEVUnknown Phis.

Actually ignoring of unreachable predecessors was supposed to be an improvement, but we don't really need it. We can yield it for sake of compile time saving.

Mar 28 2018, 5:41 AM

Mar 26 2018

anna added a comment to D44001: [SCEV] Prove implications for SCEVUnknown Phis.

Comments inline. There's 2 dominator checks (dominates and isReachableFromEntry) that's done per phi operand. That seems like a good amount of compile time usage. There's also a isReachableFromEntry check within the dominates function. I cannot see a way to reduce these checks in your patch though.

Mar 26 2018, 1:59 PM
anna accepted D43759: [SCEV] Add one more case in computeConstantDifference.

lgtm!

Mar 26 2018, 5:51 AM

Mar 23 2018

anna added inline comments to D43759: [SCEV] Add one more case in computeConstantDifference.
Mar 23 2018, 11:05 AM

Mar 22 2018

anna updated the diff for D44667: [LoopPredication] Add profitability check based on BPI.

Address Serguei's comments.

Mar 22 2018, 4:50 AM
anna added inline comments to D44667: [LoopPredication] Add profitability check based on BPI.
Mar 22 2018, 4:33 AM
anna added inline comments to D44667: [LoopPredication] Add profitability check based on BPI.
Mar 22 2018, 4:22 AM

Mar 21 2018

anna updated the diff for D44667: [LoopPredication] Add profitability check based on BPI.

use getExitEdges instead of getting exiting blocks.

Mar 21 2018, 7:20 AM
anna added inline comments to D44667: [LoopPredication] Add profitability check based on BPI.
Mar 21 2018, 5:06 AM

Mar 20 2018

anna updated the diff for D44667: [LoopPredication] Add profitability check based on BPI.

fixed a bug in internal testing with Loop predication pass initialization - we need to register
the BPI pass dependency.

Mar 20 2018, 7:30 PM
anna updated the diff for D44667: [LoopPredication] Add profitability check based on BPI.

seperated out logic into a function, instead of lambda. Added a threshold for the BPI check.

Mar 20 2018, 8:51 AM
anna added inline comments to D44667: [LoopPredication] Add profitability check based on BPI.
Mar 20 2018, 6:07 AM

Mar 19 2018

anna created D44667: [LoopPredication] Add profitability check based on BPI.
Mar 19 2018, 6:23 PM
anna accepted D44524: Add an analysis printer for must execute reasoning.

lgtm!

Mar 19 2018, 5:40 AM

Mar 16 2018

anna added inline comments to D44524: Add an analysis printer for must execute reasoning.
Mar 16 2018, 12:15 PM
anna added inline comments to D44524: Add an analysis printer for must execute reasoning.
Mar 16 2018, 11:20 AM
anna abandoned D44535: Introduce metadata for avoiding loop predication.

Artur had an idea offline that we could use BPI to identify if the latch exit is very rarely taken compared to other exits in the loop. We can teach loop predication to use that information and avoid predication, instead of depending on llvm.cond.donot_predicate metadata.

Mar 16 2018, 10:31 AM
anna added a comment to D44524: Add an analysis printer for must execute reasoning.

Just to note, other printer passes like print-memoryssa, print-lvi, print-predicate-info, we print the annotations as comments just above the IR (using the asm printer interface). It's easier to see which instruction we are referring to and quickly spot the loops they were part of , *if loops are properly annotated in the IR*. It would be useful when debugging large code base IR and spotting the missing cases.
IMO, the missing cases may be hard to spot in this printer. One workaround is to print the number of loops where it's not guaranteed to execute. That can be a separate add on after landing this as well.

From a testing perspective of the utility, this version works well for me.

This is a good idea. I'd copied the basic structure of this from the mem deref printer, but I like the annotation version better. Mind if I submit this one (so that I can start getting some basic testing around this code), and then return to the annotation as a follow on? I'll change over mem-deref while I'm at it.

SGTM.

Mar 16 2018, 10:20 AM
anna added inline comments to D44524: Add an analysis printer for must execute reasoning.
Mar 16 2018, 10:14 AM
anna added a comment to D44524: Add an analysis printer for must execute reasoning.

Just to note, other printer passes like print-memoryssa, print-lvi, print-predicate-info, we print the annotations as comments just above the IR (using the asm printer interface). It's easier to see which instruction we are referring to and quickly spot the loops they were part of , *if loops are properly annotated in the IR*. It would be useful when debugging large code base IR and spotting the missing cases.
IMO, the missing cases may be hard to spot in this printer. One workaround is to print the number of loops where it's not guaranteed to execute. That can be a separate add on after landing this as well.

Mar 16 2018, 6:50 AM
anna accepted D44542: [LICM/mustexec] Extend first iteration must exexute logic to fcmps.

lgtm!

Mar 16 2018, 6:12 AM

Mar 15 2018

anna created D44535: Introduce metadata for avoiding loop predication.
Mar 15 2018, 1:14 PM
anna accepted D44497: [EarlyCSE] Reuse invariant scopes for invariant load.

LGTM

Mar 15 2018, 6:18 AM
anna accepted D44287: [LICM] Ignore exits provably not taken on first iteration when computing must execute.

LGTM. Could you add a test to scalar-promote.ll as well? I think now we should be able to promote stores that are guaranteed to execute on first iteration (because the check the store is conditional on, does not exit the loop on first iteration).

Mar 15 2018, 6:14 AM

Mar 12 2018

anna added inline comments to D43716: [EarlyCSE] Exploit open ended invariant.start scopes.
Mar 12 2018, 10:49 AM

Mar 9 2018

anna added a comment to D43716: [EarlyCSE] Exploit open ended invariant.start scopes.

Patch looks good to me. Let's wait if anyone else has any comments.

Mar 9 2018, 12:34 PM
anna added inline comments to D44287: [LICM] Ignore exits provably not taken on first iteration when computing must execute.
Mar 9 2018, 9:15 AM

Mar 5 2018

anna added a comment to D43929: [RewriteStatepoints] Fix stale parse points.

Yevgeny, Just for record - Dan will be trying to drop it. There's something wrong with my local repo and rebuilding it still doesn't allow me to git svn dcommit.

Mar 5 2018, 12:06 PM
anna accepted D44063: [InstCombine] Don't blow up in foldICmpWithCastAndCast on vector icmp instructions..

lgtm

Mar 5 2018, 9:27 AM
anna added inline comments to D44063: [InstCombine] Don't blow up in foldICmpWithCastAndCast on vector icmp instructions..
Mar 5 2018, 9:05 AM
anna added inline comments to D44063: [InstCombine] Don't blow up in foldICmpWithCastAndCast on vector icmp instructions..
Mar 5 2018, 8:04 AM
anna added a comment to D43929: [RewriteStatepoints] Fix stale parse points.

done the minor corrections as Anna suggested.
Could anyone with appropriate rights merge the patch?

Mar 5 2018, 8:01 AM
anna accepted D43822: [CloneFunction] Support BB == PredBB in DuplicateInstructionsInSplit..

LGTM

Mar 5 2018, 8:00 AM

Mar 3 2018

anna accepted D43929: [RewriteStatepoints] Fix stale parse points.

LGTM w/ comments.

Mar 3 2018, 7:50 AM

Mar 1 2018

anna added inline comments to D43822: [CloneFunction] Support BB == PredBB in DuplicateInstructionsInSplit..
Mar 1 2018, 7:53 AM
anna requested changes to D43929: [RewriteStatepoints] Fix stale parse points.

Good find Yevgeny!
So, removeUnreachableBlocks is much more aggressive than DT.isReachableFromEntry. Did you check if there's some function that just keeps exactly what isReachableFromEntry computes?

Mar 1 2018, 7:32 AM

Feb 7 2018

anna accepted D42837: [Loop Predication] Teach LP about reverse loops with uge and sge latch conditions.

LGTM.
Btw, I actually meant separating out getLatchPredicateForGuard as NFC for just the conditions supported without this change (i.e. everything except SGE, UGE).
Then, in this change, adding support for UGE and SGE in that function and in IsUnsupportedPredicate, so that only changes related to SGE/UGE are in this patch :)

Feb 7 2018, 4:30 AM

Feb 6 2018

anna added inline comments to D42837: [Loop Predication] Teach LP about reverse loops with uge and sge latch conditions.
Feb 6 2018, 2:24 PM

Feb 2 2018

anna added a comment to D41939: [LV] Fix incorrect detection of type-promoted Phis.

I just saw on another review thread that Matt's away for a few weeks.
Max, feel free to land this change.

Feb 2 2018, 2:12 PM

Feb 1 2018

anna accepted D41939: [LV] Fix incorrect detection of type-promoted Phis.

LGTM. I think there maybe performance degradations in vectorization, but this is needed for a correctness fix.
Pls wait for @mssimpso if he has any comments.

Feb 1 2018, 5:39 AM

Jan 30 2018

anna accepted D42653: [RS4GC] Handle call/invoke instructions as base defining values of vectors.

lgtm w/ comment addressed.

Jan 30 2018, 4:35 AM
anna added a comment to D42653: [RS4GC] Handle call/invoke instructions as base defining values of vectors.

I wonder is it possible to handle this two instructions, GEPs, bitcasts, loads, and other in findBaseDefiningValue to avoid code duplication and such oversights?

Jan 30 2018, 4:31 AM

Jan 22 2018

anna added inline comments to D41939: [LV] Fix incorrect detection of type-promoted Phis.
Jan 22 2018, 2:01 PM

Jan 11 2018

anna accepted D41943: [LoopDeletion] Handle users in unreachable block.

LGTM w/ comments.

Jan 11 2018, 7:25 AM

Jan 8 2018

anna accepted D41812: [CVP] Replace incoming values from unreachable blocks with undef.

LGTM w/ comments.

Jan 8 2018, 7:10 AM
anna added a comment to D41812: [CVP] Replace incoming values from unreachable blocks with undef.

What I propose here instead is keeping track of the incoming values from unreachable blocks, and replacing them with undef. This fixes this case, and it seems to be good regardless (even if we can't prove that the value is constant, as it's coming from an unreachable block, we can ignore it).

LGTM - this was also the design I went with (change incoming values from unreachable blocks to undef) when we didn't want to break the structure of the loop in loop deletion.

Jan 8 2018, 6:46 AM

Jan 2 2018

anna added a comment to D41519: [BasicBlockUtils] Check for unreachable preds before updating LI in UpdateAnalysisInformation.

LGTM, thanks Anna. (sorry for the delay, I was in Europe for the end of the year).

Jan 2 2018, 6:26 AM
anna added a comment to D41519: [BasicBlockUtils] Check for unreachable preds before updating LI in UpdateAnalysisInformation.

ping

Jan 2 2018, 6:14 AM

Dec 22 2017

anna added a comment to D41519: [BasicBlockUtils] Check for unreachable preds before updating LI in UpdateAnalysisInformation.

I think this is on the right track, but, can you please simplify the test case so I can read it better :) ?

Dec 22 2017, 4:59 AM
anna updated the diff for D41519: [BasicBlockUtils] Check for unreachable preds before updating LI in UpdateAnalysisInformation.

Simplified the testcase to make the issue clearer.

Dec 22 2017, 4:48 AM

Dec 21 2017

anna created D41519: [BasicBlockUtils] Check for unreachable preds before updating LI in UpdateAnalysisInformation.
Dec 21 2017, 2:31 PM
anna added inline comments to D41006: [SafepointIRVerifier] Allow non-dereferencing uses of unrelocated or poisoned PHI nodes.
Dec 21 2017, 9:53 AM
anna accepted D41006: [SafepointIRVerifier] Allow non-dereferencing uses of unrelocated or poisoned PHI nodes.

lgtm w/ comment addressed.

Dec 21 2017, 9:50 AM
anna requested changes to D41006: [SafepointIRVerifier] Allow non-dereferencing uses of unrelocated or poisoned PHI nodes.

Logic looks right, some comments inline.

Dec 21 2017, 9:09 AM

Dec 18 2017

anna added a comment to D40347: [JumpThreading] Restrict PRE across instructions that don't pass control to successors.

This looks simple enough and similar to how we handle other optimizations in presence of guards (there were previous issues with JT around guards that were fixed with isGuaranteedToTransferExecutionToSuccessor as well).

Dec 18 2017, 6:13 AM
anna accepted D40347: [JumpThreading] Restrict PRE across instructions that don't pass control to successors.

lgtm.

Dec 18 2017, 6:09 AM

Dec 15 2017

anna added inline comments to D41006: [SafepointIRVerifier] Allow non-dereferencing uses of unrelocated or poisoned PHI nodes.
Dec 15 2017, 7:11 PM
anna requested changes to D41006: [SafepointIRVerifier] Allow non-dereferencing uses of unrelocated or poisoned PHI nodes.

Comments inline.

Dec 15 2017, 9:33 AM
anna added inline comments to D41006: [SafepointIRVerifier] Allow non-dereferencing uses of unrelocated or poisoned PHI nodes.
Dec 15 2017, 7:18 AM

Dec 14 2017

anna resigned from D41077: [analyser] different.CallArgsOrder checker implementation.

Perhaps added me incorrectly as reviewer?

Dec 14 2017, 6:13 PM · Restricted Project
anna accepted D41162: [PM] port Rewrite Statepoints For GC to the new pass manager..

lgtm modulo nit

Dec 14 2017, 4:13 PM
anna accepted D40886: [LVI] Support for ashr in LVI.

lgtm.

Dec 14 2017, 1:54 PM
anna requested changes to D41162: [PM] port Rewrite Statepoints For GC to the new pass manager..

comments inline. Changes look almost good to go.

Dec 14 2017, 11:07 AM
anna accepted D38030: Fix APFloat from string conversion for Inf.

just for information of folks following along - we had caught this as a heap-use-after-free error using an ASAN build. I think this may have manifested as the Windows failure that caused the revert originally.

Dec 14 2017, 6:46 AM

Dec 8 2017

anna created D41026: [InstComineLoadStoreAlloca] Optimize stores to GEP off null base.
Dec 8 2017, 10:40 AM
anna accepted D41002: [NFC][SafepointIRVerifier] Add alias for set of available values.

LGTM.

Dec 8 2017, 6:32 AM

Dec 6 2017

anna added reviewers for D40881: [ConstantRange] Support for ashr in ConstantRange computation: mkazantsev, spatel.
Dec 6 2017, 5:50 AM

Dec 1 2017

anna accepted D40613: [LoopIdiom] Recognize unordered atomic memset.

LGTM

Dec 1 2017, 11:50 AM
anna added inline comments to D40613: [LoopIdiom] Recognize unordered atomic memset.
Dec 1 2017, 11:21 AM
anna accepted D40289: [SafepointIRVerifier] Allow deriving pointers from unrelocated base.

thanks for making the changes. lgtm with a minor comment.

Dec 1 2017, 9:42 AM
anna added inline comments to D40289: [SafepointIRVerifier] Allow deriving pointers from unrelocated base.
Dec 1 2017, 8:24 AM
anna added inline comments to D40613: [LoopIdiom] Recognize unordered atomic memset.
Dec 1 2017, 7:06 AM
anna requested changes to D40289: [SafepointIRVerifier] Allow deriving pointers from unrelocated base.

Some refactoring comments in place. I think the code structuring can be made much simpler. Pls see inline comments.

Dec 1 2017, 6:42 AM

Nov 28 2017

anna added inline comments to D40353: [Loop Predication] Teach LP about reverse loops.
Nov 28 2017, 11:29 AM

Nov 22 2017

anna accepted D40289: [SafepointIRVerifier] Allow deriving pointers from unrelocated base.

Thanks for addressing the comments in the downstream version (and Max's comments here). This LGTM.

Nov 22 2017, 6:55 AM
anna created D40353: [Loop Predication] Teach LP about reverse loops.
Nov 22 2017, 6:33 AM

Nov 17 2017

anna accepted D39954: [IRCE] Smart range intersection.

LGTM. thanks for the comments and clarification.

Nov 17 2017, 10:33 AM
anna accepted D40168: [IRCE][NFC] Add no wrap flags to no-wrapping SCEV calculation.

lgtm

Nov 17 2017, 10:32 AM

Nov 16 2017

anna added inline comments to D39954: [IRCE] Smart range intersection.
Nov 16 2017, 6:24 AM

Nov 15 2017

anna added inline comments to D39954: [IRCE] Smart range intersection.
Nov 15 2017, 6:37 AM

Nov 14 2017

anna added a comment to D39954: [IRCE] Smart range intersection.

Max, the patch explanation and logic of using SCEV subtraction LGTM. I'll need to take a closer look at your rules and the calculation in subtraction lambda.

Nov 14 2017, 11:38 AM
anna added inline comments to D39954: [IRCE] Smart range intersection.
Nov 14 2017, 11:15 AM

Nov 3 2017

anna abandoned D39598: [LoopPredication] NFC: Refactored code to separate out functions being reused.

Was using this just to verify the diff on phab.

Nov 3 2017, 7:23 AM
anna created D39598: [LoopPredication] NFC: Refactored code to separate out functions being reused.
Nov 3 2017, 7:21 AM

Nov 2 2017

anna added inline comments to D39500: [LoopPredication] Enable predication when latchCheckIV is wider than rangeCheck.
Nov 2 2017, 2:26 PM
anna updated the diff for D39388: [RS4GC] Strip off invariant.start because memory locations arent invariant.

Updated function names per review comment. NFC wrt previous diff.

Nov 2 2017, 7:45 AM

Nov 1 2017

anna created D39500: [LoopPredication] Enable predication when latchCheckIV is wider than rangeCheck.
Nov 1 2017, 12:03 PM
anna added inline comments to D39388: [RS4GC] Strip off invariant.start because memory locations arent invariant.
Nov 1 2017, 10:40 AM
anna added a comment to D39388: [RS4GC] Strip off invariant.start because memory locations arent invariant.

just a note: We haven't yet added support to forward loads/stores across calls when the calls are dominated by invariant.start. However, that's a perfectly legal transform, and this patch makes sure we don't miscompile when the transformation is supported.

Nov 1 2017, 9:29 AM

Oct 31 2017

anna updated the diff for D39388: [RS4GC] Strip off invariant.start because memory locations arent invariant.

addressed review comments.

Oct 31 2017, 9:39 AM