Page MenuHomePhabricator

Bigcheese (Michael Spencer)
User

Projects

User Details

User Since
Jul 7 2012, 3:08 PM (335 w, 3 d)

Recent Activity

Mon, Nov 12

Bigcheese accepted D54451: [libObject] Fix getDesc for Elf_Note_Impl.

lgtm

Mon, Nov 12, 4:20 PM
Bigcheese added a comment to D54451: [libObject] Fix getDesc for Elf_Note_Impl.

Ah, the bugs canceled each other out. Adding a unit test is fine. Just add a new file in llvm/unittests/Object/.

Mon, Nov 12, 4:14 PM
Bigcheese added a comment to D54451: [libObject] Fix getDesc for Elf_Note_Impl.

Overall this looks fine, but can you add a test of something that this fixes? I'm rather surprised that no tests fail now.

Mon, Nov 12, 3:34 PM

Nov 1 2018

Bigcheese added a comment to D43157: [RISCV] Properly evaluate VK_RISCV_PCREL_LO.

Ping?

I have a patch available that handles PCREL_LO12_S and is rebased on trunk, if it is okay I will create a separate patch for reviewing.

Nov 1 2018, 10:28 AM

Oct 25 2018

Bigcheese accepted D53683: [ELF] Add --{,no-}call-graph-profile-sort (enabled by default).

lgtm

Oct 25 2018, 4:13 PM
Bigcheese added a comment to D53669: [ELF] Don't check if symbols in .llvm.call-graph-profile are unorderable.

I'm all in favor of removing the warnings. I was against adding them to begin with.

Oct 25 2018, 12:58 PM
Bigcheese added inline comments to D53683: [ELF] Add --{,no-}call-graph-profile-sort (enabled by default).
Oct 25 2018, 12:54 PM

Oct 24 2018

Bigcheese added a comment to D46228: [ELF] Use union-find set in Call-Chain Clustering (C³) heuristic to improve worst-case time complexity..

Pretty sure I understand the algorithm now, but I still want to see what performance impact it has to see if it's worth the (minor) complexity. I'll benchmark it on some large links and see what happens.

Oct 24 2018, 6:49 PM
Bigcheese added a comment to D53683: [ELF] Add --{,no-}call-graph-profile-sort (enabled by default).

I really like adding the option to disable it, but I'm not sure about disabling it by default. Is there any situation where the profile is present where a user wouldn't want to perform layout? The algorithm is very fast so unexpected link time increase isn't really an issue, and the exact order of sections already isn't guaranteed by ELF and differs between linkers so I don't expect there to be correctness issues.

Oct 24 2018, 6:28 PM

Sep 19 2018

Bigcheese updated the diff for D45850: [ELF] Read the call graph profile from object files..
  • Added test for unorderable symbols from object files
  • Removed unneeded temporary
Sep 19 2018, 2:44 PM

Sep 17 2018

Bigcheese added a comment to D45850: [ELF] Read the call graph profile from object files..

ping

Sep 17 2018, 8:51 PM

Sep 7 2018

Bigcheese requested changes to D51205: Move SuffixTree type to a common location.
Sep 7 2018, 2:16 PM

Sep 5 2018

Bigcheese updated the diff for D45850: [ELF] Read the call graph profile from object files..

Address review comments.

Sep 5 2018, 12:42 PM

Jul 23 2018

Bigcheese accepted D49680: [ADT] Replace std::isprint by llvm::isPrint..

lgtm

Jul 23 2018, 12:40 PM

Jul 19 2018

Bigcheese added inline comments to D44910: [docs] Add Markdown support to Sphinx.
Jul 19 2018, 5:00 PM

Jul 18 2018

Bigcheese accepted D49298: Use std::reference_wrapper instead of llvm::ReferenceStorage.

lgtm.

Jul 18 2018, 2:17 PM
Bigcheese added a comment to D44910: [docs] Add Markdown support to Sphinx.

This just needs the recommonmark python package added on whatever server builds the docs.

Jul 18 2018, 2:15 PM

Jul 3 2018

Bigcheese accepted D48859: Make WindowsSupport.h a public header.

Is there a good reason the use cases you want this for can't be added to libSupport? I'm a bit worried about continuing to add platform specific code outside of libSupport.

Mostly that it's quite large. See my recent post on llvm-dev about RFC: libtrace. I don't want to develop an entire library inside of libSupport, and something like a libtrace will unavoidably have a lot of platform specific code. As another example, consider lldb. There's no way to avoid a bunch of platform specific code, and it would be nice if LLVM had a solution that allowed LLDB to re-use some of LLVM's own platform specific code.

Jul 3 2018, 11:58 PM
Bigcheese added a comment to D48859: Make WindowsSupport.h a public header.

Is there a good reason the use cases you want this for can't be added to libSupport? I'm a bit worried about continuing to add platform specific code outside of libSupport.

Jul 3 2018, 8:28 PM

Jun 28 2018

Bigcheese accepted D48703: Add natvis files directly to the PDB instead of to the VS solution.

lgtm

Jun 28 2018, 2:55 PM

Jun 26 2018

Bigcheese updated the diff for D48105: [llvm][Instrumentation] Add Call Graph Profile pass.

Remove duplication on updating Counts.

Jun 26 2018, 3:51 PM
Bigcheese updated the diff for D48105: [llvm][Instrumentation] Add Call Graph Profile pass.

Add support for indirect calls using value profiling data.

Jun 26 2018, 3:27 PM

Jun 25 2018

Bigcheese added inline comments to D48105: [llvm][Instrumentation] Add Call Graph Profile pass.
Jun 25 2018, 7:41 PM
Bigcheese updated the diff for D48105: [llvm][Instrumentation] Add Call Graph Profile pass.
  • Move to new PM
  • Use CallSite
  • Bail early if no profile counts
  • Use TargetTransformInfo::isLoweredToCall
Jun 25 2018, 7:40 PM

Jun 19 2018

Bigcheese added a comment to D46228: [ELF] Use union-find set in Call-Chain Clustering (C³) heuristic to improve worst-case time complexity..

I mean performance of actual cases. I'm interested in if the cache effects of list vs vector matter.

Jun 19 2018, 8:09 PM

Jun 14 2018

Bigcheese added a comment to D46228: [ELF] Use union-find set in Call-Chain Clustering (C³) heuristic to improve worst-case time complexity..

Sorry for the delay. What change in performance does this give?

Jun 14 2018, 12:09 PM

Jun 13 2018

Bigcheese updated the diff for D48105: [llvm][Instrumentation] Add Call Graph Profile pass.

Use the correct diff.

Jun 13 2018, 3:47 PM
Bigcheese added a comment to D48105: [llvm][Instrumentation] Add Call Graph Profile pass.

This is enabled by default as the time and size overhead is so small.

Jun 13 2018, 3:46 PM
Bigcheese updated the diff for D48105: [llvm][Instrumentation] Add Call Graph Profile pass.

Address review comments.

Jun 13 2018, 3:46 PM
Bigcheese added inline comments to D48105: [llvm][Instrumentation] Add Call Graph Profile pass.
Jun 13 2018, 11:48 AM
Bigcheese updated the diff for D48105: [llvm][Instrumentation] Add Call Graph Profile pass.

Address review comments by adding const where applicable.

Jun 13 2018, 11:48 AM

Jun 12 2018

Bigcheese created D48105: [llvm][Instrumentation] Add Call Graph Profile pass.
Jun 12 2018, 4:03 PM

Jun 4 2018

Bigcheese accepted D47080: Add (very partial) Kate syntax highlighting definition for TableGen.

lgtm.

Jun 4 2018, 5:19 AM

May 31 2018

Bigcheese updated the diff for D44965: [llvm][Instrumentation/MC] Add Call Graph Profile pass and object file emission..

I've changed the behavior to better match the existing semantics.

May 31 2018, 4:02 PM

May 29 2018

Bigcheese added inline comments to D44965: [llvm][Instrumentation/MC] Add Call Graph Profile pass and object file emission..
May 29 2018, 6:04 PM
Bigcheese updated the diff for D44965: [llvm][Instrumentation/MC] Add Call Graph Profile pass and object file emission..
  • Remove IR parts, those will be in a separate patch.
  • Update Extensions.rst
  • Add assembly only test
May 29 2018, 4:45 PM
Bigcheese added a comment to D44965: [llvm][Instrumentation/MC] Add Call Graph Profile pass and object file emission..

In writing the documentation I ran into an issue defining the precise semantics of .cg_profile when it includes a symbol which has not previously been referenced. In an updated patch I'm treating it as if .weak <symbol> was written if <symbol> has not yet been used. This leads to the following behavior:

May 29 2018, 3:31 PM

May 24 2018

Bigcheese edited reviewers for D44965: [llvm][Instrumentation/MC] Add Call Graph Profile pass and object file emission., added: compnerd, pcc; removed: espindola.

Adding some reviewers that last touched metadata.

May 24 2018, 3:25 PM

Apr 26 2018

Bigcheese added a comment to D44965: [llvm][Instrumentation/MC] Add Call Graph Profile pass and object file emission..

The MC and Object parts are enough for lld, yes.

Apr 26 2018, 4:21 PM

Apr 19 2018

Bigcheese added a child revision for D44965: [llvm][Instrumentation/MC] Add Call Graph Profile pass and object file emission.: D45850: [ELF] Read the call graph profile from object files..
Apr 19 2018, 5:08 PM
Bigcheese added a parent revision for D45850: [ELF] Read the call graph profile from object files.: D44965: [llvm][Instrumentation/MC] Add Call Graph Profile pass and object file emission..
Apr 19 2018, 5:08 PM
Bigcheese created D45850: [ELF] Read the call graph profile from object files..
Apr 19 2018, 5:05 PM

Apr 18 2018

Bigcheese updated the diff for D44965: [llvm][Instrumentation/MC] Add Call Graph Profile pass and object file emission..

Previous update was missing tests. Fixed.

Apr 18 2018, 8:17 PM
Bigcheese updated the diff for D44965: [llvm][Instrumentation/MC] Add Call Graph Profile pass and object file emission..

I'm also updating the lld patch that reads this, will have that up shortly.

Apr 18 2018, 7:31 PM

Apr 16 2018

Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.

Address review comments.

Apr 16 2018, 3:26 PM · lld

Apr 12 2018

Bigcheese added inline comments to D36351: [lld][ELF] Add profile guided section layout.
Apr 12 2018, 3:20 PM · lld
Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.

Addressed review comments.

Apr 12 2018, 3:15 PM · lld

Apr 11 2018

Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.

Address review comments.

Apr 11 2018, 4:19 PM · lld
Bigcheese added inline comments to D36351: [lld][ELF] Add profile guided section layout.
Apr 11 2018, 4:19 PM · lld

Apr 9 2018

Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.

Address review comments.

Apr 9 2018, 12:45 PM · lld

Apr 5 2018

Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.

Address review comments.

Apr 5 2018, 3:53 PM · lld
Bigcheese added inline comments to D36351: [lld][ELF] Add profile guided section layout.
Apr 5 2018, 3:52 PM · lld

Apr 2 2018

Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.

Address review comments.

Apr 2 2018, 5:17 PM · lld

Mar 29 2018

Bigcheese abandoned D42161: Add Call Graph Profile pass and ELF assembly support.
Mar 29 2018, 12:46 PM
Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.

Address review comments.

Mar 29 2018, 11:36 AM · lld
Bigcheese added inline comments to D36351: [lld][ELF] Add profile guided section layout.
Mar 29 2018, 11:35 AM · lld

Mar 28 2018

Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.

Address review comments.

Mar 28 2018, 1:56 PM · lld

Mar 27 2018

Bigcheese created D44965: [llvm][Instrumentation/MC] Add Call Graph Profile pass and object file emission..
Mar 27 2018, 5:11 PM

Mar 26 2018

Bigcheese created D44910: [docs] Add Markdown support to Sphinx.
Mar 26 2018, 2:58 PM

Mar 22 2018

Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.

Apply review comments.

Mar 22 2018, 5:09 PM · lld

Mar 7 2018

Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.

Address review comments.

Mar 7 2018, 8:03 PM · lld

Mar 5 2018

Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.

Rewrote the algorithm to match hfsort. Now gets the same performance as hfsort in Rafael's testcase.

Mar 5 2018, 10:43 AM · lld

Mar 1 2018

Bigcheese added a comment to D43988: Fix processing of path names in response files on Windows.

I don't think this is a right thing to do because creating a Windows executable doesn't necessarily mean that you are doing it on Command Prompt and vice versa. clang and lld support --rsp-quoting={windows,posix} to explicitly tell the driver how to parse response files. Didn't that work for you?

Mar 1 2018, 6:04 PM
Bigcheese added a comment to D43988: Fix processing of path names in response files on Windows.

LLVM's tools do not have a standard way to indicate the response file quoting style.

But if there was a problem that we had to fix by adding --rsp-quoting option, that will become a problem with this patch, no?

Mar 1 2018, 6:03 PM
Bigcheese added a reviewer for D43989: MRI delete command: rafael.

I'm not sure about this one. I've added Rafael as a reviewer as he's on the blame for most of this code.

Mar 1 2018, 5:32 PM
Bigcheese accepted D43987: Fix ar command line expansion on Windows..

This is good, but this should be using llvm-ar's failIfError instead of adding ExitOnError. Moving the error handling to ExitOnError should be a separate commit if done.

Mar 1 2018, 5:15 PM
Bigcheese accepted D43986: Allow MRI scripts as file input on cmd line.

lgtm.

Mar 1 2018, 5:01 PM

Feb 19 2018

Bigcheese added a comment to D43157: [RISCV] Properly evaluate VK_RISCV_PCREL_LO.

ping

Feb 19 2018, 8:46 PM
Bigcheese added a comment to D43158: [RISCV] Always emit a symbol for R_RISCV_PCREL_LO12_I..

ping

Feb 19 2018, 8:46 PM

Feb 10 2018

Bigcheese created D43158: [RISCV] Always emit a symbol for R_RISCV_PCREL_LO12_I..
Feb 10 2018, 3:21 AM
Bigcheese created D43157: [RISCV] Properly evaluate VK_RISCV_PCREL_LO.
Feb 10 2018, 3:16 AM

Feb 8 2018

Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.
  • Update to top of tree.
  • Add some comments.
Feb 8 2018, 6:06 PM · lld
Bigcheese accepted D43102: Refactor how we decide which sections to sort.

Seems fine and removes the duplication of names. My only concern is mixing --symbol-ordering-file with call graph sort in buildSectionOrder. Currently in the patch call graph sorting is applied then the order file. With this the two would need to be mixed into a single DenseMap, or the loop would need to be duplicated (which is what the patch currently does).

Feb 8 2018, 5:47 PM

Feb 7 2018

Bigcheese created D43038: [ELF] Don't sort non reorderable sections with --symbol-ordering-file.
Feb 7 2018, 1:03 PM · lld

Feb 2 2018

Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.
  • Don't reorder non-reorderable sections
  • Skip edges across output sections
  • Add tests
Feb 2 2018, 1:51 PM · lld

Feb 1 2018

Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.
  • Order all sections and add a test
  • Simplified
  • Remove unused include
Feb 1 2018, 4:18 PM · lld
Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.

Changed to testcase from paper.

Feb 1 2018, 12:05 PM · lld

Jan 17 2018

Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.

I've simplified the logic by getting rid of WorkLookup and just embedding the std::set iterator in Edge.

Jan 17 2018, 12:45 AM · lld
Bigcheese created D42163: [STLExtras] Add merge_unique.
Jan 17 2018, 12:34 AM
Bigcheese created D42161: Add Call Graph Profile pass and ELF assembly support.
Jan 17 2018, 12:30 AM

Dec 15 2017

Bigcheese added inline comments to D36351: [lld][ELF] Add profile guided section layout.
Dec 15 2017, 7:07 PM · lld
Bigcheese added a comment to D36351: [lld][ELF] Add profile guided section layout.
In D36351#957474, @ruiu wrote:

I wonder what was a motivation to implement two different ways to do one thing.

Dec 15 2017, 6:32 PM · lld
Bigcheese added inline comments to D36351: [lld][ELF] Add profile guided section layout.
Dec 15 2017, 6:29 PM · lld
Bigcheese added a comment to D36351: [lld][ELF] Add profile guided section layout.
In D36351#957139, @ruiu wrote:

Then I wonder why you need to pass a profile data to the linker as a text file in the first place. Does the data embedded to an object file lack something, like inter-compilation-unit call frequency?

Dec 15 2017, 6:18 PM · lld
Bigcheese added inline comments to D36351: [lld][ELF] Add profile guided section layout.
Dec 15 2017, 1:46 AM · lld

Dec 14 2017

Bigcheese added inline comments to D36351: [lld][ELF] Add profile guided section layout.
Dec 14 2017, 7:47 PM · lld
Bigcheese added a comment to D36351: [lld][ELF] Add profile guided section layout.
In D36351#956212, @ruiu wrote:

This needs to be implemented in the linker because of the line:

if (From.Size + To.Size > Target->PageSize)
  continue;

This is responsible for doubling the performance improvement on a game. Implementing this outside of the linker requires implementing most of the linker, including LTO.

And function sizes cannot be retrieved from the instrumented build (because instrumentation changes function size), so it must be computed at link-time. Is this correct?

Dec 14 2017, 7:29 PM · lld
Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.

Address review comments.

Dec 14 2017, 5:52 PM · lld
Bigcheese added a comment to D36351: [lld][ELF] Add profile guided section layout.

This needs to be implemented in the linker because of the line:

if (From.Size + To.Size > Target->PageSize)
  continue;

This is responsible for doubling the performance improvement on a game. Implementing this outside of the linker requires implementing most of the linker, including LTO.

Dec 14 2017, 5:51 PM · lld

Dec 13 2017

Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.

Fix priority queue bugs.

Dec 13 2017, 9:03 PM · lld

Oct 30 2017

Bigcheese added a comment to D37820: [BinaryFormat] Teach identify_magic about Tapi files..

Is the intent for TAPI files to be a subset of YAML? This only detects one very specific way of starting a YAML file.

Oct 30 2017, 6:45 PM

Sep 8 2017

Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.

Address review comments.

Sep 8 2017, 3:56 PM · lld

Sep 5 2017

Bigcheese added a comment to D36351: [lld][ELF] Add profile guided section layout.

As for benchmark numbers, I'm still getting up to speed on setting up chromium for PGO and perf testing, but @pcc has done some over at crbug.com/759259 and gotten interesting results.

Sep 5 2017, 7:10 PM · lld
Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.

Switch to adjacency lists and priority_queue to remove the E^2 behavior.

Sep 5 2017, 7:04 PM · lld

Aug 23 2017

Bigcheese added inline comments to D36351: [lld][ELF] Add profile guided section layout.
Aug 23 2017, 12:22 PM · lld

Aug 22 2017

Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.
Aug 22 2017, 8:00 PM · lld
Bigcheese added a comment to D36351: [lld][ELF] Add profile guided section layout.

Could you give me a few benchmark numbers and a instruction to reproduce the results, so that we are sure that the feature actually produces better results.

Aug 22 2017, 7:55 PM · lld
Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.
Aug 22 2017, 5:56 PM · lld
Bigcheese added inline comments to D36351: [lld][ELF] Add profile guided section layout.
Aug 22 2017, 5:56 PM · lld

Aug 21 2017

Bigcheese updated the diff for D36351: [lld][ELF] Add profile guided section layout.
Aug 21 2017, 8:21 PM · lld