paquette (Jessica Paquette)
Friendly Neighbourhood Canadian

Projects

User does not belong to any projects.

User Details

User Since
Nov 17 2016, 12:59 PM (60 w, 5 d)

oh boy

Recent Activity

Fri, Jan 12

paquette committed rL322425: [MachineOutliner] Move hasAddressTaken check to MachineOutliner.cpp.
[MachineOutliner] Move hasAddressTaken check to MachineOutliner.cpp
Fri, Jan 12, 4:43 PM

Wed, Jan 10

paquette committed rL322207: [MachineOutliner] Outline ADRPs.
[MachineOutliner] Outline ADRPs
Wed, Jan 10, 10:51 AM

Mon, Jan 8

paquette committed rL322048: [MachineOutliner] AArch64: Handle instrs that use SP and will never need fixups.
[MachineOutliner] AArch64: Handle instrs that use SP and will never need fixups
Mon, Jan 8, 4:27 PM
paquette updated the diff for D41719: [InlineCost] Prevent infinite recursion on function pointers.

Got rid of the magic 100 for the maximum depth and put in a command line option (-inline-recursion-limit) instead. I tried a few different limits with the knob and found that this test crashes around a recursion depth of 3500 on my machine. A max depth of 2000 seemed like a good middle-ground.

Mon, Jan 8, 1:39 PM

Thu, Jan 4

paquette updated the diff for D41719: [InlineCost] Prevent infinite recursion on function pointers.

Updated patch to prevent general recursion instead of just the one edgecase. Also added some information to the dump function for CallAnalyzer to make it clear if the inliner bailed out because of the recursion limit.

Thu, Jan 4, 4:24 PM

Wed, Jan 3

paquette created D41719: [InlineCost] Prevent infinite recursion on function pointers.
Wed, Jan 3, 2:40 PM

Mon, Dec 18

paquette committed rL321028: [MachineOutliner][NFC] Gardening: use std::any_of instead of bool + loop.
[MachineOutliner][NFC] Gardening: use std::any_of instead of bool + loop
Mon, Dec 18, 1:45 PM
paquette committed rL321014: [MachineOutliner] Recommit r320229.
[MachineOutliner] Recommit r320229
Mon, Dec 18, 11:34 AM

Dec 8 2017

paquette committed rL320229: [MachineOutliner] Outline calls.
[MachineOutliner] Outline calls
Dec 8 2017, 4:44 PM

Dec 7 2017

paquette committed rL320090: [MachineOutliner] Fix offset overflow check.
[MachineOutliner] Fix offset overflow check
Dec 7 2017, 1:52 PM

Dec 1 2017

paquette committed rL319588: [MachineOutliner] NFC: Throw out self-intersections on candidates early.
[MachineOutliner] NFC: Throw out self-intersections on candidates early
Dec 1 2017, 1:57 PM

Oct 23 2017

paquette committed rL316396: [MachineOutliner] Add optimisation remarks for successful outlining.
[MachineOutliner] Add optimisation remarks for successful outlining
Oct 23 2017, 4:37 PM
paquette added a comment to D38768: Add remarks describing when a pass changes the IR instruction count of a module.

Now that there's discussion on making the new pass manager the default pass manager, I'm wondering if it'd make sense to just go ahead and implement this functionality there entirely? I was hoping to get it done with the LegacyPassManager first then port it over after.

Oct 23 2017, 9:55 AM
paquette committed rL316341: [MachineOutliner] NFC: Rename getters/setters to fit coding style.
[MachineOutliner] NFC: Rename getters/setters to fit coding style
Oct 23 2017, 9:26 AM

Oct 17 2017

paquette committed rL316031: [MachineOutliner][NFC] Clean up prune logic a bit.
[MachineOutliner][NFC] Clean up prune logic a bit
Oct 17 2017, 2:12 PM
paquette committed rL316027: Fix typo in checkTwoLevelHintsCommand.
Fix typo in checkTwoLevelHintsCommand
Oct 17 2017, 1:43 PM
paquette committed rL316020: [MachineOutliner][NFC] Move decrement logic to OutlinedFunction.
[MachineOutliner][NFC] Move decrement logic to OutlinedFunction
Oct 17 2017, 12:03 PM
paquette committed rL316019: [MachineOutliner][NFC] Move end index calculation into Candidate.
[MachineOutliner][NFC] Move end index calculation into Candidate
Oct 17 2017, 11:43 AM

Oct 13 2017

paquette updated the diff for D38768: Add remarks describing when a pass changes the IR instruction count of a module.

Updated diff to reflect current comments on the review.

Oct 13 2017, 4:17 PM
paquette added inline comments to D38768: Add remarks describing when a pass changes the IR instruction count of a module.
Oct 13 2017, 11:38 AM

Oct 10 2017

paquette updated the diff for D38768: Add remarks describing when a pass changes the IR instruction count of a module.

Accidentally added some useless cruft in CGSCCPassManager.h in the first diff. Removed it.

Oct 10 2017, 3:11 PM
paquette created D38768: Add remarks describing when a pass changes the IR instruction count of a module.
Oct 10 2017, 3:07 PM

Oct 9 2017

paquette added a comment to D37434: WinEH for unnamed functions.

I also suggest adding some reviewers to your patch! If you look at the blamelist of WinException.cpp you'll probably find some people that know the code well that can look at your stuff. I'm not a Windows expert, but if I was I'd give you a proper review. :)

Oct 9 2017, 11:38 PM
paquette added a comment to D37434: WinEH for unnamed functions.

I feel like the test here could use some simplification to make it clearer what you're testing. If there's any IR in there that you don't *absolutely* need, it'd be good to remove it. This makes it easier for others to debug failures in the future.

Oct 9 2017, 11:33 PM
paquette added inline comments to D30295: [analyzer] clarify undef shift result when shift count is negative or exceeds the bit width.
Oct 9 2017, 11:14 PM

Oct 6 2017

paquette committed rL315136: [MachineOutliner] Disable outlining from LinkOnceODRs by default.
[MachineOutliner] Disable outlining from LinkOnceODRs by default
Oct 6 2017, 5:18 PM

Oct 3 2017

paquette committed rL314836: [MachineOutliner] Fix off-by-one in cost model.
[MachineOutliner] Fix off-by-one in cost model
Oct 3 2017, 1:34 PM

Sep 28 2017

paquette committed rL314475: [MachineOutliner][NFC] Simplify logic in pruneCandidates.
[MachineOutliner][NFC] Simplify logic in pruneCandidates
Sep 28 2017, 4:41 PM

Sep 27 2017

paquette closed D36721: [MachineOutliner] AArch64: Avoid saving + restoring LR if possible.

Committed:
r314341 - [MachineOutliner] AArch64: Avoid saving + restoring LR if possible

Sep 27 2017, 4:06 PM
paquette committed rL314341: [MachineOutliner] AArch64: Avoid saving + restoring LR if possible.
[MachineOutliner] AArch64: Avoid saving + restoring LR if possible
Sep 27 2017, 1:49 PM

Sep 25 2017

paquette updated the diff for D36721: [MachineOutliner] AArch64: Avoid saving + restoring LR if possible.
  • Simplified the MIR test a bit
  • Fixed the loop for the LiveRegisterUnits stuff so that we only check if LR is available at the prospective call-site
Sep 25 2017, 5:02 AM

Sep 22 2017

paquette added inline comments to D36721: [MachineOutliner] AArch64: Avoid saving + restoring LR if possible.
Sep 22 2017, 9:50 AM

Sep 20 2017

paquette updated the diff for D36721: [MachineOutliner] AArch64: Avoid saving + restoring LR if possible.

Updated the diff to address feedback. There are lots of changes, but here are the highlights:

Sep 20 2017, 11:17 AM

Sep 1 2017

paquette committed rL312387: [MIParser] Ensure getHexUint doesn't produce APInts with a bitwidth of 0.
[MIParser] Ensure getHexUint doesn't produce APInts with a bitwidth of 0
Sep 1 2017, 3:18 PM
paquette created D37401: [MIParser] Make sure that getHexUint doesn't produce APInts with a bitwidth of 0.
Sep 1 2017, 2:23 PM

Aug 31 2017

paquette committed rL312280: [MachineOutliner] Recommit r312194, missed optimization remarks.
[MachineOutliner] Recommit r312194, missed optimization remarks
Aug 31 2017, 2:04 PM
paquette committed rL312277: [NFC] Change Key in Argument to a std::string.
[NFC] Change Key in Argument to a std::string
Aug 31 2017, 1:49 PM

Aug 30 2017

paquette committed rL312194: [MachineOutliner] Add missed optimization remarks for the outliner..
[MachineOutliner] Add missed optimization remarks for the outliner.
Aug 30 2017, 4:33 PM
paquette updated the diff for D37085: [MachineOutliner] Add missed optimization remarks based off outliner cost model.

Got the twine thing @anemet suggested working so I threw it in.

Aug 30 2017, 4:29 PM
paquette updated the diff for D37085: [MachineOutliner] Add missed optimization remarks based off outliner cost model.

Updated diff to address Adam's comments again.

Aug 30 2017, 1:43 PM
paquette added inline comments to D37085: [MachineOutliner] Add missed optimization remarks based off outliner cost model.
Aug 30 2017, 10:46 AM

Aug 29 2017

paquette updated the diff for D37085: [MachineOutliner] Add missed optimization remarks based off outliner cost model.

Updated again because I forgot to remove the #include "llvm/CodeGen/MachineBlockFrequencyInfo.h". Whoops.

Aug 29 2017, 11:24 AM
paquette updated the diff for D37085: [MachineOutliner] Add missed optimization remarks based off outliner cost model.

Updated patch to address @anemet's comments.

Aug 29 2017, 11:24 AM

Aug 23 2017

paquette created D37085: [MachineOutliner] Add missed optimization remarks based off outliner cost model.
Aug 23 2017, 4:01 PM
paquette added inline comments to D36721: [MachineOutliner] AArch64: Avoid saving + restoring LR if possible.
Aug 23 2017, 10:40 AM

Aug 14 2017

paquette created D36721: [MachineOutliner] AArch64: Avoid saving + restoring LR if possible.
Aug 14 2017, 4:43 PM
paquette committed rL310894: [MachineOutliner] Only outline candidates of length >= 2.
[MachineOutliner] Only outline candidates of length >= 2
Aug 14 2017, 3:59 PM

Aug 10 2017

paquette committed rL310671: [MachineOutliner] Add RegState::Define to LDRXpost in insertOutlinedCall.
[MachineOutliner] Add RegState::Define to LDRXpost in insertOutlinedCall
Aug 10 2017, 4:12 PM

Aug 8 2017

paquette committed rL310422: [MachineOutliner] Ensure AArch64 outliner doesn't mess with W30 or LR.
[MachineOutliner] Ensure AArch64 outliner doesn't mess with W30 or LR
Aug 8 2017, 2:54 PM
paquette updated the diff for D36435: [MachineOutliner] Ensure AArch64 outliner doesn't mess with any register that overlaps with LR.

Updated the diff to reflect taking Matthias' advice.

Aug 8 2017, 2:45 PM
paquette added inline comments to D36435: [MachineOutliner] Ensure AArch64 outliner doesn't mess with any register that overlaps with LR.
Aug 8 2017, 2:45 PM

Aug 7 2017

paquette created D36435: [MachineOutliner] Ensure AArch64 outliner doesn't mess with any register that overlaps with LR.
Aug 7 2017, 4:28 PM

Jul 28 2017

paquette edited reviewers for D35980: [WIP] Add a generic interface for outlining., added: paquette; removed: jpaquette.
Jul 28 2017, 8:04 PM
paquette committed rL309475: [MachineOutliner] NFC: Change IsTailCall to a call class + frame class.
[MachineOutliner] NFC: Change IsTailCall to a call class + frame class
Jul 28 2017, 7:56 PM

Jul 27 2017

paquette committed rL309365: [MachineOutliner] NFC: Comment tidying.
[MachineOutliner] NFC: Comment tidying
Jul 27 2017, 11:01 PM
paquette committed rL309356: [MachineOutliner] NFC: Split up getOutliningBenefit.
[MachineOutliner] NFC: Split up getOutliningBenefit
Jul 27 2017, 8:22 PM
paquette committed rL309334: [MachineOutliner] Cleanup: move findCandidates out of suffix tree.
[MachineOutliner] Cleanup: move findCandidates out of suffix tree
Jul 27 2017, 4:27 PM
paquette added inline comments to D35960: [MachineOutliner] Cleanup: move findCandidates out of suffix tree.
Jul 27 2017, 4:18 PM
paquette added a comment to D35960: [MachineOutliner] Cleanup: move findCandidates out of suffix tree.

Even better: put findCandidates actually *inside* the MachineOutliner class for consistency.

Still LGTM. And if it's just moving code around inside a file you authored, just do it without phabricator review. Post-commit review is fine.

Jul 27 2017, 4:11 PM
paquette added inline comments to D35960: [MachineOutliner] Cleanup: move findCandidates out of suffix tree.
Jul 27 2017, 4:09 PM
paquette updated the diff for D35960: [MachineOutliner] Cleanup: move findCandidates out of suffix tree.

Even better: put findCandidates actually *inside* the MachineOutliner class for consistency.

Jul 27 2017, 4:05 PM
paquette created D35960: [MachineOutliner] Cleanup: move findCandidates out of suffix tree.
Jul 27 2017, 3:52 PM

Jun 19 2017

paquette requested changes to D34056: Tail merge size.

I agree with Davide on this. I think we really need to have a good reason to change thresholds like these; the impact of changing thresholds can be rather unpredictable. I'd like to understand why changing this threshold

Jun 19 2017, 9:04 AM

Mar 29 2017

paquette added a comment to D30670: [Outliner] Add tail call support.

Hi Jessica,

I noticed that this was committed without addressing my feedback about the boolean parameters, what's up? :)

-eric

Mar 29 2017, 1:13 PM

Mar 24 2017

paquette committed rL298747: [Outliner] Revert r298734..
[Outliner] Revert r298734.
Mar 24 2017, 4:12 PM
paquette committed rL298734: [Outliner] Remove no red zone requirment for AArch64.
[Outliner] Remove no red zone requirment for AArch64
Mar 24 2017, 2:00 PM

Mar 23 2017

paquette committed rL298651: [Outliner] Remove unused lambda capture..
[Outliner] Remove unused lambda capture.
Mar 23 2017, 3:29 PM
paquette committed rL298648: [Outliner] Fix compile-time overhead for candidate choice.
[Outliner] Fix compile-time overhead for candidate choice
Mar 23 2017, 2:40 PM

Mar 22 2017

paquette added inline comments to D31145: [Outliner] Fix compile-time overhead for candidate choice.
Mar 22 2017, 12:17 PM
paquette added a comment to D31145: [Outliner] Fix compile-time overhead for candidate choice.

Why is it O(n) on average? It is two nested for loops with some bailouts that only affect the asymptotic runtime if candidates overlap with little-omega(1) other candidates. And it needs to be big-omega(sqrt(n)) if the runtime is to be reduced to even O(n^1.5).

Mar 22 2017, 12:05 PM
paquette requested changes to D30572: Remove equal BBs from a function.

I think the comments in this pass could use some improvement. It would be nice to be able to get the gist of what's going on without having to read through all of the code.

Mar 22 2017, 11:42 AM

Mar 20 2017

paquette updated the summary of D31145: [Outliner] Fix compile-time overhead for candidate choice.
Mar 20 2017, 12:28 PM
paquette added a comment to D31145: [Outliner] Fix compile-time overhead for candidate choice.

I am confused:

The candidate collection method in the outliner can cause some dramatic code size regressions on large tests.

... vs ...

This change doesn't impact the code size results. In fact, by collecting all potential candidates, we can probably make the outliner make better decisions for what to outline in the future.

Mar 20 2017, 11:59 AM
paquette created D31145: [Outliner] Fix compile-time overhead for candidate choice.
Mar 20 2017, 11:29 AM
paquette committed rL298263: [Outliner] ACTUALLY remove the errs output.
[Outliner] ACTUALLY remove the errs output
Mar 20 2017, 9:37 AM
paquette committed rL298260: [Outliner] Remove output for offset range check.
[Outliner] Remove output for offset range check
Mar 20 2017, 9:04 AM

Mar 17 2017

paquette committed rL298162: [Outliner] Add outliner for AArch64.
[Outliner] Add outliner for AArch64
Mar 17 2017, 4:36 PM
paquette updated the diff for D30914: [Outliner] Add outliner for AArch64.

Updated the diff to address comments.

Mar 17 2017, 2:11 PM

Mar 16 2017

paquette updated the diff for D30914: [Outliner] Add outliner for AArch64.

Updated diff to address comments

Mar 16 2017, 3:22 PM

Mar 13 2017

paquette created D30914: [Outliner] Add outliner for AArch64.
Mar 13 2017, 3:00 PM
paquette abandoned D30797: [Outliner] Add simple stack fixup support in X86.

This is too hard to write a test for because it only handles two instructions. It was intended as a proof of concept for the AArch64 target for the outliner which I'm about to put up. I'm just going to create a patch for that instead, since it can be tested easily there. The logic here can be used for reference.

Mar 13 2017, 2:43 PM
paquette committed rL297653: [Outliner] Add tail call support.
[Outliner] Add tail call support
Mar 13 2017, 11:51 AM
paquette updated the diff for D30670: [Outliner] Add tail call support.

Added a test case, removed the tail call MachineOutlinerInstrType.

Mar 13 2017, 11:05 AM

Mar 10 2017

paquette removed a dependency for D30797: [Outliner] Add simple stack fixup support in X86: D30670: [Outliner] Add tail call support.
Mar 10 2017, 2:10 PM
paquette removed a dependent revision for D30670: [Outliner] Add tail call support: D30797: [Outliner] Add simple stack fixup support in X86.
Mar 10 2017, 2:10 PM

Mar 9 2017

paquette added a dependent revision for D30670: [Outliner] Add tail call support: D30797: [Outliner] Add simple stack fixup support in X86.
Mar 9 2017, 4:07 PM
paquette added a dependency for D30797: [Outliner] Add simple stack fixup support in X86: D30670: [Outliner] Add tail call support.
Mar 9 2017, 4:07 PM
paquette created D30797: [Outliner] Add simple stack fixup support in X86.
Mar 9 2017, 4:07 PM

Mar 8 2017

paquette updated the diff for D30670: [Outliner] Add tail call support.

Removed the extra instruction type for tail calls and fixed up the other couple minor things.

Mar 8 2017, 4:56 PM
paquette committed rL297319: [Outliner] Fix memory leak in suffix tree..
[Outliner] Fix memory leak in suffix tree.
Mar 8 2017, 4:07 PM

Mar 6 2017

paquette created D30670: [Outliner] Add tail call support.
Mar 6 2017, 4:18 PM
paquette committed rL297081: [Outliner] Fixed Asan bot failure in r296418.
[Outliner] Fixed Asan bot failure in r296418
Mar 6 2017, 1:43 PM
paquette committed rL297064: Test commit. Added a blank line..
Test commit. Added a blank line.
Mar 6 2017, 12:57 PM

Feb 27 2017

paquette updated the diff for D26872: Outliner: Add MIR-level outlining pass.

Third time is the charm. Edits to the tests. The debug test now *truly* makes sure that debug values don't impact outlining. Also removed some cruft from the tests.

Feb 27 2017, 4:15 PM
paquette updated the diff for D26872: Outliner: Add MIR-level outlining pass.

Changes

  • Realized that the last debug test wasn't sufficient, so I fixed it up. It now handles debug values as well.
Feb 27 2017, 3:48 PM
paquette updated the diff for D26872: Outliner: Add MIR-level outlining pass.

Changes

  • Added negative test for debug info in machine-outliner-debuginfo.ll. The check allows for is_stmt debug stuff because that seems to be out of my control.
Feb 27 2017, 2:17 PM
paquette added a comment to D26872: Outliner: Add MIR-level outlining pass.

My LGTM still stands. Should I commit on your behalf or do you already have access?

Feb 27 2017, 2:02 PM
paquette updated the diff for D26872: Outliner: Add MIR-level outlining pass.

Okay, here's the next revision, everyone!

Feb 27 2017, 1:55 PM
paquette added a comment to D26872: Outliner: Add MIR-level outlining pass.

... 403.gcc and 483.xalancbmk (at least) seem to have a huge compile time slowdown (superlinear behavior?). Some rough numbers comparing LLC runtime:
403.gcc 11s -> 66s
483.xalancbmk 16s -> 144s
(so about 5-10x slowdown of LLC due to the suffix tree)

Most of the time seems to be spent inside buildCandidateList. Sampling a couple stacks it seems like it is stuck in findBest...
...
Modulo the pruning that is going on, we seem to do O(N) work in bestRepeatedSubstring once per outlining candidate. Is the pruning effective enough that the sum of all calls to bestRepeatedSubstring doesn't grow out of control? My suspicion is that it isn't, and I think a contrived case like AAABBBCCCDDD... (Assume "A" represents constant-size string large enough to be profitable to outline) will trigger O(N^2) behavior in the number of instructions in the module.
Is it possible to do algorithmically better? (exploiting suffix tree invariants maybe?)

Feb 27 2017, 1:38 PM

Feb 23 2017

paquette updated the diff for D26872: Outliner: Add MIR-level outlining pass.

Alright, it's been a while, but here's the next version of the outlining patch! As always, thanks to everyone taking the time to read through all this code. This version of the outliner is quite different from the previous one, since I've improved on it a lot since the last patch.

Feb 23 2017, 10:40 AM