Page MenuHomePhabricator

evgeny777 (Eugene Leviant)
User

Projects

User does not belong to any projects.

User Details

User Since
Sep 1 2015, 3:36 AM (263 w, 5 d)

Recent Activity

Sat, Sep 12

evgeny777 committed rG2e61cd1295e0: [MachineScheduler] Fix operand scheduling for pre/post-increment loads (authored by evgeny777).
[MachineScheduler] Fix operand scheduling for pre/post-increment loads
Sat, Sep 12, 6:53 AM
evgeny777 closed D87557: [AArch64][MachineScheduler] Fix operand scheduling for pre/post-increment loads.
Sat, Sep 12, 6:53 AM · Restricted Project
evgeny777 added a reviewer for D87557: [AArch64][MachineScheduler] Fix operand scheduling for pre/post-increment loads: dmgreen.
Sat, Sep 12, 6:01 AM · Restricted Project
evgeny777 updated the diff for D87557: [AArch64][MachineScheduler] Fix operand scheduling for pre/post-increment loads.

@dmgreen Thx, I've updated the diff.

Sat, Sep 12, 6:01 AM · Restricted Project
evgeny777 requested review of D87557: [AArch64][MachineScheduler] Fix operand scheduling for pre/post-increment loads.
Sat, Sep 12, 5:20 AM · Restricted Project

Fri, Sep 11

evgeny777 abandoned D69331: [LegacyPM] Port CGProfile pass.
Fri, Sep 11, 12:58 AM · Restricted Project

Thu, Sep 10

evgeny777 added inline comments to D46884: [AArch64] Cortex-A55 scheduler model.
Thu, Sep 10, 3:07 AM

Wed, Sep 2

evgeny777 added a comment to D86905: Flush bitcode incrementally for LTO output.

Our case is a bit different. Given a 512M incremental flush threshold, I tested an LTO built that outputs a 5G bitcode file. The BackpatchWord is called 16,613,927 times, among which only 12 needs disk seek. Plus, each access visits 4-8 bytes on a page, and all visited pages are far away from each other. It is likely that the pages are not cached, and need to load anyway, and after a load, our code does not access enough data on a page to 'cancel' the page fault cost. So its cost could be very similar to seek.

Wed, Sep 2, 1:53 AM · Restricted Project

Tue, Sep 1

evgeny777 added inline comments to D86905: Flush bitcode incrementally for LTO output.
Tue, Sep 1, 5:19 AM · Restricted Project

Aug 20 2020

evgeny777 committed rGd5b701b9727d: [ThinLTO] Import globals recursively (authored by evgeny777).
[ThinLTO] Import globals recursively
Aug 20 2020, 2:14 AM
evgeny777 closed D73698: [ThinLTO] Import globals recursively.
Aug 20 2020, 2:14 AM · Restricted Project

Aug 1 2020

evgeny777 committed rGe73f5d86f179: [MachineVerifier] Refactor calcRegsPassed. NFC (authored by evgeny777).
[MachineVerifier] Refactor calcRegsPassed. NFC
Aug 1 2020, 2:59 AM
evgeny777 closed D84105: [MachineVerifier] Speed-up verification (up to 10x).
Aug 1 2020, 2:59 AM · Restricted Project

Jul 31 2020

evgeny777 accepted D84985: [ThinLTO] Compile time improvement to propagateAttributes.

The code in computeDeadSymbols will conservatively mark all copies live if any is. See not only the worklist iteration I modified here, but also the code in visit at lines 878-879, and the preserved GUID handling at lines 814-815. So if there is a collision, the colliding values may conservatively be marked live, so the loop in propagateAttributes will handle them. I.e they are either all dead or all live (especially after my fix here which will make the behavior more conservative in the chance case of any alias values that collide with a value marked live during module summary building). Other than the corner case I'm fixing here, this should be a no-op in behavior for that loop in propagateAttributes, which was already skipping all dead values, and which does check if it is a GlobalVarSummary already.

Jul 31 2020, 9:56 AM · Restricted Project
evgeny777 updated the diff for D73698: [ThinLTO] Import globals recursively.

Rebased/improved test case. @tejohnson Can you please look at this? I think that after D73851 compile time regressions are unlikely (at least I don't see them in LLVM test suite)

Jul 31 2020, 9:02 AM · Restricted Project
evgeny777 added a comment to D84985: [ThinLTO] Compile time improvement to propagateAttributes.

I made a smaller efficiency improvement (no measurable impact) to skip all summaries for a VI if the first copy is dead. I added an assert to ensure that all copies are dead if any is....

Jul 31 2020, 5:43 AM · Restricted Project
evgeny777 updated the diff for D84105: [MachineVerifier] Speed-up verification (up to 10x).

@arsenm

This LGTM, but why is the verifier figuring out how to do its own RPO?

Jul 31 2020, 4:08 AM · Restricted Project

Jul 24 2020

evgeny777 added a comment to D84105: [MachineVerifier] Speed-up verification (up to 10x).

Can anyone look at this, please? Thanks

Jul 24 2020, 10:23 AM · Restricted Project

Jul 23 2020

evgeny777 committed rGdc619f3d7a97: [CodeGen][TargetPassConfig] Add unreachable-mbb-elimination pass explicitly (authored by evgeny777).
[CodeGen][TargetPassConfig] Add unreachable-mbb-elimination pass explicitly
Jul 23 2020, 8:05 AM
evgeny777 closed D84228: [CodeGen][TargetPassConfig] Add unreachable-mbb-elimination pass explicitly.
Jul 23 2020, 8:05 AM · Restricted Project

Jul 22 2020

evgeny777 added a comment to D84228: [CodeGen][TargetPassConfig] Add unreachable-mbb-elimination pass explicitly.

Does this mean that we run UnreachableMachineBlockElimID twice?

Jul 22 2020, 1:58 AM · Restricted Project

Jul 21 2020

Herald added a project to D84228: [CodeGen][TargetPassConfig] Add unreachable-mbb-elimination pass explicitly: Restricted Project.
Jul 21 2020, 3:32 AM · Restricted Project

Jul 20 2020

evgeny777 added a reviewer for D84105: [MachineVerifier] Speed-up verification (up to 10x): rtereshin.
Jul 20 2020, 9:20 AM · Restricted Project

Jul 18 2020

evgeny777 added a comment to D84047: [CodeGen][TargetPassConfig] Add TargetTransformInfo pass correctly.

How did you notice the problem?

Jul 18 2020, 12:02 PM · Restricted Project
Herald added a project to D84105: [MachineVerifier] Speed-up verification (up to 10x): Restricted Project.
Jul 18 2020, 9:29 AM · Restricted Project

Jul 17 2020

Herald added a project to D84047: [CodeGen][TargetPassConfig] Add TargetTransformInfo pass correctly: Restricted Project.
Jul 17 2020, 9:51 AM · Restricted Project

Jul 8 2020

evgeny777 committed rGa07498425099: [MIR] Speedup parsing of function with large number of basic blocks (authored by evgeny777).
[MIR] Speedup parsing of function with large number of basic blocks
Jul 8 2020, 8:50 AM
evgeny777 closed D83389: [MIR] Speedup parsing (up to 1000x+).
Jul 8 2020, 8:50 AM · Restricted Project
Herald added a project to D83389: [MIR] Speedup parsing (up to 1000x+): Restricted Project.
Jul 8 2020, 5:38 AM · Restricted Project
evgeny777 accepted D73242: [WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP.

LGTM

Jul 8 2020, 5:31 AM · Restricted Project, Restricted Project

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: [Support] On Windows, add optional support for {rpmalloc|snmalloc|mimalloc}.

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: [Support] On Windows, add optional support for {rpmalloc|snmalloc|mimalloc} 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