Page MenuHomePhabricator
Feed Advanced Search

Apr 23 2020

evgeny777 abandoned D78650: [MC][AArch64] Fail if x18 is reserved and used.

Well, this makes sense. Also I've encountered with cases when asm proc uses X18 is like a callee saved register which doesn't prevent shadow call stack runtime from working properly. Calling this off.

Apr 23 2020, 11:22 AM

Apr 22 2020

evgeny777 added a comment to D78650: [MC][AArch64] Fail if x18 is reserved and used.

@efriedma From AArch64GenSubtargetInfo.inc:

Apr 22 2020, 11:26 AM
evgeny777 created D78650: [MC][AArch64] Fail if x18 is reserved and used.
Apr 22 2020, 9:12 AM

Apr 17 2020

evgeny777 added a comment to D71786: RFC: [Support] On Windows, add optional support for rpmalloc.

This speeds up thin LTO link more than 10 times on Ryzen-9 3950X / Windows 10: from 30 mins to less than 3 mins

Apr 17 2020, 9:42 AM · Restricted Project
evgeny777 awarded D71786: RFC: [Support] On Windows, add optional support for rpmalloc a Like token.
Apr 17 2020, 9:11 AM · Restricted Project

Apr 6 2020

evgeny777 added a comment to D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.

This needs to be rebased

Apr 6 2020, 4:17 AM · Restricted Project, Restricted Project

Mar 12 2020

evgeny777 added a comment to D75655: [Docs] Document -lto-whole-program-visibility.

@pcc

That case seems somewhat questionable to me. If the symbols are being exported, it is presumably for the purpose of allowing the symbols to be used outside of the defining DSO. But LTO visibility based optimizations could make any such use of the symbols unsafe. For example with WPD it's unsafe to derive outside of the defining DSO and with dead virtual function elimination it's unsafe to call virtual functions outside of the defining DSO.

Mar 12 2020, 11:57 AM · Restricted Project

Mar 9 2020

evgeny777 committed rG6d2032e259c7: [WPD] Provide a way to prevent functions from being devirtualized (authored by evgeny777).
[WPD] Provide a way to prevent functions from being devirtualized
Mar 9 2020, 4:48 AM
evgeny777 closed D75617: [WPD] Provide a way to prevent function(s) from being devirtualized.
Mar 9 2020, 4:48 AM · Restricted Project

Mar 6 2020

evgeny777 updated the diff for D75617: [WPD] Provide a way to prevent function(s) from being devirtualized.

Addressed comments

Mar 6 2020, 3:18 AM · Restricted Project

Mar 5 2020

evgeny777 added a comment to D75617: [WPD] Provide a way to prevent function(s) from being devirtualized.

What is the goal for this option? Do you expect any users of this or this is for debugging WPD?

Mar 5 2020, 11:32 AM · Restricted Project
evgeny777 added a comment to D75617: [WPD] Provide a way to prevent function(s) from being devirtualized.

@pcc Just to clarify: I'm using this patch to identify problems with WPD (typically those are either invalid reinterpret_cast or open type hierarchy). I find it convenient to obtain a list of devirtualized functions using pass remarks, "undevirtualize" some of them relink and run. With attributes it seems to be much harder

Mar 5 2020, 10:59 AM · Restricted Project
evgeny777 added a comment to D75617: [WPD] Provide a way to prevent function(s) from being devirtualized.

There is already a way to do this, with the attribute [[clang::lto_visibility_public]]. Why do you need another one?

Mar 5 2020, 10:57 AM · Restricted Project
evgeny777 updated the diff for D75617: [WPD] Provide a way to prevent function(s) from being devirtualized.
  • Added support for index based WPD
  • Minor improvements in test case
Mar 5 2020, 10:22 AM · Restricted Project
evgeny777 added a comment to D75617: [WPD] Provide a way to prevent function(s) from being devirtualized.
if we didn't summarize foo, then we would incorrectly perform a single impl devirt to bar, when we shouldn't have devirtualized at all.
Mar 5 2020, 8:45 AM · Restricted Project
evgeny777 added a comment to D75617: [WPD] Provide a way to prevent function(s) from being devirtualized.

This won't work for the index-only WPD.

This can be addressed at the moment, because index based WPD supports only single-impl devirtualization. In this case we have function name in the index.

Mar 5 2020, 1:41 AM · Restricted Project

Mar 4 2020

evgeny777 created D75617: [WPD] Provide a way to prevent function(s) from being devirtualized.
Mar 4 2020, 9:00 AM · Restricted Project
evgeny777 committed rG670a40360ed4: Attempt to fix buildbot after 497c110e (authored by evgeny777).
Attempt to fix buildbot after 497c110e
Mar 4 2020, 2:22 AM
evgeny777 committed rG497c110e8734: [lld][ELF][COFF] Fix archived bitcode files naming (authored by evgeny777).
[lld][ELF][COFF] Fix archived bitcode files naming
Mar 4 2020, 2:21 AM
evgeny777 closed D75422: [lld][ELF][COFF] Fix archived bitcode files naming.
Mar 4 2020, 2:20 AM · Restricted Project

Mar 3 2020

evgeny777 updated the diff for D75422: [lld][ELF][COFF] Fix archived bitcode files naming.

Added check for temp file

Mar 3 2020, 12:24 AM · Restricted Project

Mar 2 2020

evgeny777 added a comment to D75201: [ThinLTO/LowerTypeTests] Handle unpromoted local type ids.

@tejohnson

This should happen if the type ID has no use on type metadata, but then I think it should be removed by WPD.

Mar 2 2020, 9:55 AM · Restricted Project
evgeny777 added a comment to D75201: [ThinLTO/LowerTypeTests] Handle unpromoted local type ids.

Not sure about strict aliasing, but adding -fwhole-program-vtables seems like a good idea. I'd also add -flto-visibility-public-std.

Mar 2 2020, 9:29 AM · Restricted Project
evgeny777 added a comment to D75201: [ThinLTO/LowerTypeTests] Handle unpromoted local type ids.

@tejohnson I think, I found the reason of crash, described in https://reviews.llvm.org/D73242#1893744. There is the following sequence of instructions in VirtualFileSystem.cpp.obj:

store i32 (...)** bitcast ({ [5 x i8*] }* @"??_7RealFile@?A0x1AE555D7@@6B@" to i32 (...)**), i32 (...)*** %1, align 8, !dbg !36936, !tbaa !15844
...
%3 = tail call i1 @llvm.type.test(i8* bitcast ({ [5 x i8*] }* @"??_7RealFile@?A0x1AE555D7@@6B@" to i8*), metadata !"1$f8264c715b0bffc7d68899cd8e73067d") #8, !dbg !36937
tail call void @llvm.assume(i1 %3) #8, !dbg !36937

The only users of VTable ??_7RealFile@?A0x1AE555D7@@6B@ are store instructions which is not reflected in summary index. This causes type.test not being eliminated during WPD and then lowering to false during LTT. So far we get unreachable in the linked image.

Mar 2 2020, 8:06 AM · Restricted Project
evgeny777 accepted D75426: [LTO] onfig::addSaveTemps: clear ResolutionFile upon an error.

LGTM

Mar 2 2020, 12:43 AM · Restricted Project

Mar 1 2020

evgeny777 added a comment to D75422: [lld][ELF][COFF] Fix archived bitcode files naming.

Suggested: Support -save-temps for thin archives.

Mar 1 2020, 10:09 PM · Restricted Project
evgeny777 created D75422: [lld][ELF][COFF] Fix archived bitcode files naming.
Mar 1 2020, 7:02 AM · Restricted Project

Feb 28 2020

evgeny777 accepted D75201: [ThinLTO/LowerTypeTests] Handle unpromoted local type ids.

I'm seeing crashes with this patch in two stage compilation, reported here: https://reviews.llvm.org/D73242#1893744. However the change seems reasonable, so I think it makes sense to push it and then investigate remaining issues. That said, LGTM

Feb 28 2020, 8:35 PM · Restricted Project

Feb 26 2020

evgeny777 committed rG8f8756d465e4: [Assembler] Allow assembling empty index with non-zero flags (authored by evgeny777).
[Assembler] Allow assembling empty index with non-zero flags
Feb 26 2020, 5:50 AM
evgeny777 closed D74778: [Assembler] Allow assembling empty index with non-zero flags.
Feb 26 2020, 5:50 AM · Restricted Project

Feb 21 2020

evgeny777 added a comment to D74778: [Assembler] Allow assembling empty index with non-zero flags.

I was thinking of addressing 'skip-module-by-distributed-backend' case. For instance see writeEmptyDistributedBuildOutputs:

if (SkipModule) {
  ModuleSummaryIndex Index(/*HaveGVs*/ false);
  Index.setSkipModuleByDistributedBackend();
  WriteIndexToFile(Index, OS, nullptr);
}
Feb 21 2020, 9:46 AM · Restricted Project

Feb 18 2020

evgeny777 created D74778: [Assembler] Allow assembling empty index with non-zero flags.
Feb 18 2020, 9:49 AM · Restricted Project
evgeny777 committed rGc85055b20392: [Assembler] Emit summary index flags (authored by evgeny777).
[Assembler] Emit summary index flags
Feb 18 2020, 6:53 AM
evgeny777 closed D74420: [Assembler] Emit summary index flags.
Feb 18 2020, 6:52 AM · Restricted Project

Feb 14 2020

evgeny777 updated the diff for D74420: [Assembler] Emit summary index flags.

Addressed comments

Feb 14 2020, 7:37 AM · Restricted Project
evgeny777 accepted D74512: Reenable "Always import constants" after compile time fixes.

LGTM

Feb 14 2020, 5:10 AM · Restricted Project

Feb 11 2020

evgeny777 created D74420: [Assembler] Emit summary index flags.
Feb 11 2020, 9:21 AM · Restricted Project

Feb 9 2020

evgeny777 abandoned D69947: [ThinLTO] Simplify attribute propagation.
Feb 9 2020, 10:01 PM · Restricted Project

Feb 6 2020

evgeny777 abandoned D74132: [ThinLTO/WPD] Remove dead code and improve test case.

Thanks!

Feb 6 2020, 10:52 PM · Restricted Project
evgeny777 updated the diff for D73698: [ThinLTO] Import globals recursively.

Rebased

Feb 6 2020, 8:43 AM · Restricted Project
evgeny777 added a comment to D74132: [ThinLTO/WPD] Remove dead code and improve test case.
I know I ran into issues when testing our apps with my changes that required this. But perhaps it is only the invocation at line 1180 - are you saying that one is needed but the others aren't?
Feb 6 2020, 8:41 AM · Restricted Project
evgeny777 created D74132: [ThinLTO/WPD] Remove dead code and improve test case.
Feb 6 2020, 7:57 AM · Restricted Project

Feb 5 2020

evgeny777 accepted D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.

LGTM

Feb 5 2020, 7:16 AM · Restricted Project, Restricted Project
evgeny777 added inline comments to D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.
Feb 5 2020, 12:32 AM · Restricted Project, Restricted Project

Feb 4 2020

evgeny777 added inline comments to D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.
Feb 4 2020, 8:13 AM · Restricted Project, Restricted Project
evgeny777 added inline comments to D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.
Feb 4 2020, 5:28 AM · Restricted Project, Restricted Project

Feb 3 2020

evgeny777 accepted D73851: [ThinLTO] More efficient export computation (NFC).

LGTM, thanks!

Feb 3 2020, 8:59 AM · Restricted Project
evgeny777 added inline comments to D73851: [ThinLTO] More efficient export computation (NFC).
Feb 3 2020, 2:45 AM · Restricted Project

Jan 31 2020

evgeny777 added a comment to D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.

This patch is to be rebased against D73094

Jan 31 2020, 6:02 AM · Restricted Project, Restricted Project

Jan 30 2020

evgeny777 added a comment to D73698: [ThinLTO] Import globals recursively.

FYI we had to disable a related variable importing patch due to some widespread order of magnitude increases in thin link time (see D73724). Until that is addressed, this should go under an option off by default, or just held off.

Jan 30 2020, 11:25 AM · Restricted Project
evgeny777 created D73698: [ThinLTO] Import globals recursively.
Jan 30 2020, 5:45 AM · Restricted Project

Jan 29 2020

evgeny777 added a comment to D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.

This is an enabler for upcoming enhancements to indirect call promotion, for example streamlined promotion guard sequences that compare against vtable address instead of the target function

Jan 29 2020, 7:58 AM · Restricted Project, Restricted Project

Jan 27 2020

evgeny777 accepted D73418: [WPD] Emit vcall_visibility metadata for MicrosoftCXXABI.

LGTM

Jan 27 2020, 1:33 AM · Restricted Project

Jan 24 2020

evgeny777 removed a reviewer for D62148: [llvm-nm] Omit the symbol table entry at index 0 when --debug-syms is enabled for ELF files: evgeny777.
Jan 24 2020, 4:52 AM

Jan 23 2020

evgeny777 updated the diff for D73094: [WPD] Allow load/save bitcoded index when running opt -wholeprogramdevirt.

Added check for regular LTO module in combined summary

Jan 23 2020, 8:19 AM · Restricted Project
evgeny777 accepted D71913: [LTO/WPD] Enable aggressive WPD under LTO option.

LGTM, thanks!

Jan 23 2020, 7:16 AM · Restricted Project, Restricted Project
evgeny777 accepted D71907: [WPD/VFE] Always emit vcall_visibility metadata for -fwhole-program-vtables.

LGTM

Jan 23 2020, 7:16 AM · Restricted Project, Restricted Project
evgeny777 accepted D71911: [ThinLTO] Summarize vcall_visibility metadata.

LGTM

Jan 23 2020, 7:16 AM · Restricted Project, Restricted Project
evgeny777 added a comment to D71913: [LTO/WPD] Enable aggressive WPD under LTO option.

Looks good so far. See remaining comment in D71907

Jan 23 2020, 2:00 AM · Restricted Project, Restricted Project
evgeny777 added inline comments to D71907: [WPD/VFE] Always emit vcall_visibility metadata for -fwhole-program-vtables.
Jan 23 2020, 1:51 AM · Restricted Project, Restricted Project

Jan 22 2020

evgeny777 added a comment to D73094: [WPD] Allow load/save bitcoded index when running opt -wholeprogramdevirt.

Would it be worthwhile to add some checking in somewhere that there are no locals in the index read by opt?

Jan 22 2020, 9:09 AM · Restricted Project
evgeny777 updated the diff for D73094: [WPD] Allow load/save bitcoded index when running opt -wholeprogramdevirt.

Addressed

Jan 22 2020, 8:12 AM · Restricted Project
evgeny777 added a comment to D73094: [WPD] Allow load/save bitcoded index when running opt -wholeprogramdevirt.

One issue with taking combined indexes in testing is the handling of module paths when there are locals (won't be hit by the included test which doesn't contain any). E.g. in WPD if we try to promote when the target is a local function, we attempt to get its promoted global name:

Jan 22 2020, 7:55 AM · Restricted Project
evgeny777 added inline comments to D71913: [LTO/WPD] Enable aggressive WPD under LTO option.
Jan 22 2020, 5:02 AM · Restricted Project, Restricted Project

Jan 21 2020

evgeny777 added inline comments to D71907: [WPD/VFE] Always emit vcall_visibility metadata for -fwhole-program-vtables.
Jan 21 2020, 8:05 AM · Restricted Project, Restricted Project
evgeny777 added inline comments to D71911: [ThinLTO] Summarize vcall_visibility metadata.
Jan 21 2020, 7:55 AM · Restricted Project, Restricted Project
evgeny777 added inline comments to D71913: [LTO/WPD] Enable aggressive WPD under LTO option.
Jan 21 2020, 6:57 AM · Restricted Project, Restricted Project
evgeny777 updated the diff for D73094: [WPD] Allow load/save bitcoded index when running opt -wholeprogramdevirt.

Removed WPD resolution from source index asm file.

Jan 21 2020, 4:39 AM · Restricted Project
evgeny777 planned changes to D73094: [WPD] Allow load/save bitcoded index when running opt -wholeprogramdevirt.
Jan 21 2020, 3:49 AM · Restricted Project
evgeny777 created D73094: [WPD] Allow load/save bitcoded index when running opt -wholeprogramdevirt.
Jan 21 2020, 3:49 AM · Restricted Project
evgeny777 added a child revision for D73091: [llvm-as] Fix assembling of index with multiple summaries sharing the same GUID: D73094: [WPD] Allow load/save bitcoded index when running opt -wholeprogramdevirt.
Jan 21 2020, 3:49 AM · Restricted Project
evgeny777 created D73091: [llvm-as] Fix assembling of index with multiple summaries sharing the same GUID.
Jan 21 2020, 3:23 AM · Restricted Project

Jan 20 2020

evgeny777 added a comment to D73010: [llvm-lto2] By default, use two threads for ThinLTO backend..

Honestly, this looks weird (why 2 threads not 1 for example)? Also for anyone running lto on multicore machine results would be surprising at the very least.

Jan 20 2020, 12:16 AM · Restricted Project

Jan 17 2020

evgeny777 added inline comments to D71913: [LTO/WPD] Enable aggressive WPD under LTO option.
Jan 17 2020, 11:11 AM · Restricted Project, Restricted Project

Jan 16 2020

evgeny777 added a comment to D72517: [lld/ELF] PR44498: Support input filename in double quote.

I think that adding extra flag to GlobPattern::create was better idea. Just set it to false by default, so that GlobPattern will still act as glob matcher for all other users:

static static Expected<GlobPattern> create(StringRef Pat, bool IgnoreMetaChars = false);

Than add extra constructor to StringMatcher to which you'll pass GlobPattern and use it from InputSectionDescription constructor.

Jan 16 2020, 5:45 AM · Restricted Project
evgeny777 added a comment to D71913: [LTO/WPD] Enable aggressive WPD under LTO option.

Thanks, I'm still in process of testing (now fixing issue which however is most likely related to devirtualization itself, not to this patch). Meanwhile some of my comments below.

Jan 16 2020, 2:17 AM · Restricted Project, Restricted Project
evgeny777 added a comment to D71911: [ThinLTO] Summarize vcall_visibility metadata.

I think this has to be rebased - I see multiple failures when trying to apply

Jan 16 2020, 1:40 AM · Restricted Project, Restricted Project

Jan 15 2020

evgeny777 committed rG10cadee5ce86: [ThinLTO] Always import constants (authored by evgeny777).
[ThinLTO] Always import constants
Jan 15 2020, 8:35 AM
evgeny777 closed D70404: [ThinLTO] Always import constants.
Jan 15 2020, 8:35 AM · Restricted Project

Jan 14 2020

evgeny777 accepted D72648: [ThinLTO/WPD] Remove an overly-aggressive assert.

LGTM

Jan 14 2020, 10:54 AM · Restricted Project
evgeny777 updated the diff for D70404: [ThinLTO] Always import constants.

Ah, sorry, uploaded wrong file.

Jan 14 2020, 9:27 AM · Restricted Project
evgeny777 added a comment to D70404: [ThinLTO] Always import constants.

Addressed review comments

Jan 14 2020, 6:45 AM · Restricted Project
evgeny777 updated the diff for D70404: [ThinLTO] Always import constants.
Jan 14 2020, 6:45 AM · Restricted Project
evgeny777 added inline comments to D70404: [ThinLTO] Always import constants.
Jan 14 2020, 6:06 AM · Restricted Project

Jan 13 2020

evgeny777 accepted D71040: [ThinLTO/WPD] Fix index-based WPD for alias vtables.

LGTM

Jan 13 2020, 10:17 AM · Restricted Project
evgeny777 added inline comments to D71913: [LTO/WPD] Enable aggressive WPD under LTO option.
Jan 13 2020, 7:16 AM · Restricted Project, Restricted Project
evgeny777 added inline comments to D72517: [lld/ELF] PR44498: Support input filename in double quote.
Jan 13 2020, 1:30 AM · Restricted Project
evgeny777 added a comment to D70404: [ThinLTO] Always import constants.

Ping

Jan 13 2020, 1:23 AM · Restricted Project

Dec 27 2019

evgeny777 added a comment to D71907: [WPD/VFE] Always emit vcall_visibility metadata for -fwhole-program-vtables.

Looks good at first sight. Do you have linker patch for me to try this out?

Dec 27 2019, 6:18 AM · Restricted Project, Restricted Project
evgeny777 added inline comments to D71911: [ThinLTO] Summarize vcall_visibility metadata.
Dec 27 2019, 5:51 AM · Restricted Project, Restricted Project

Dec 18 2019

evgeny777 committed rGad364956edb7: [ThinLTO] Show preserved symbols in DOT files (authored by evgeny777).
[ThinLTO] Show preserved symbols in DOT files
Dec 18 2019, 7:35 AM
evgeny777 closed D71608: [ThinLTO] Show preserved symbols in DOT files.
Dec 18 2019, 7:35 AM · Restricted Project

Dec 17 2019

evgeny777 created D71608: [ThinLTO] Show preserved symbols in DOT files.
Dec 17 2019, 6:49 AM · Restricted Project
evgeny777 added a comment to D71040: [ThinLTO/WPD] Fix index-based WPD for alias vtables.

Could you possibly try check-all or check-llvm? This problem was occuring in the LLVM unit tests.

Dec 17 2019, 1:16 AM · Restricted Project

Dec 13 2019

evgeny777 added a comment to D71040: [ThinLTO/WPD] Fix index-based WPD for alias vtables.

Strange this assertion probably means, that there are two summaries with external linkage in VTableVI. I tried reproducer out of curiosity, but it worked fine for me (no assertion on stage2 with ninja clang).

Dec 13 2019, 10:51 AM · Restricted Project

Dec 12 2019

evgeny777 added inline comments to D70404: [ThinLTO] Always import constants.
Dec 12 2019, 7:36 AM · Restricted Project
evgeny777 updated the diff for D70404: [ThinLTO] Always import constants.
  • Added test case for 'readonly' constants (import-ro-constant.ll)
  • Added support for 'Constant' attribute to dot dumper
  • Addressed other comments
Dec 12 2019, 7:36 AM · Restricted Project

Nov 22 2019

evgeny777 added a comment to D70404: [ThinLTO] Always import constants.
Out of curiosity, what problem do you run into when you unify ReadOnly with Constant?
Nov 22 2019, 12:14 AM · Restricted Project

Nov 21 2019

evgeny777 updated the diff for D70404: [ThinLTO] Always import constants.

I reimplemented the patch, now using extra 'Constant' attribute in GlobalVarSummary.

Nov 21 2019, 7:03 AM · Restricted Project
evgeny777 added a comment to D70404: [ThinLTO] Always import constants.

Patch was tested on Firefox and LLVM test suites. Both pass flawlessly

Nov 21 2019, 7:03 AM · Restricted Project