fedor.sergeev (Fedor Sergeev)
User

Projects

User does not belong to any projects.

User Details

User Since
Feb 10 2017, 1:36 AM (87 w, 4 d)

Recent Activity

Yesterday

fedor.sergeev committed rL344524: Revert "[NewPM] teach -passes= to emit meaningful error messages".
Revert "[NewPM] teach -passes= to emit meaningful error messages"
Mon, Oct 15, 8:38 AM
fedor.sergeev committed rL344519: [NewPM] teach -passes= to emit meaningful error messages.
[NewPM] teach -passes= to emit meaningful error messages
Mon, Oct 15, 8:02 AM
fedor.sergeev closed D53246: [NewPM] teach -passes= to emit meaningful error messages.
Mon, Oct 15, 8:02 AM
fedor.sergeev updated the diff for D53246: [NewPM] teach -passes= to emit meaningful error messages.

fixing return code for -passes-ep* tests (should not be failing).

Mon, Oct 15, 7:00 AM
fedor.sergeev updated the diff for D53246: [NewPM] teach -passes= to emit meaningful error messages.

adding error handling for repeated EP pipeline parsing.

Mon, Oct 15, 6:11 AM
fedor.sergeev committed rL344505: [NewPM] implement SCC printing for -print-before-all/-print-after-all.
[NewPM] implement SCC printing for -print-before-all/-print-after-all
Mon, Oct 15, 3:48 AM
fedor.sergeev closed D53270: [NewPM] implement SCC printing for -print-before-all/-print-after-all.
Mon, Oct 15, 3:48 AM
fedor.sergeev added a comment to D53270: [NewPM] implement SCC printing for -print-before-all/-print-after-all.

It is a bugfix that adds missing functionality of actually printing an SCC. :)
When doing initial implementation I got a wrong assumption that SCC does not need to be printed since it will be printed on Function level.
For actual SCC passes this assumption is clearly wrong. And it gets fixed now.

Mon, Oct 15, 1:15 AM
fedor.sergeev updated the diff for D53270: [NewPM] implement SCC printing for -print-before-all/-print-after-all.

addressing the remaining comment

Mon, Oct 15, 12:40 AM
fedor.sergeev added inline comments to D53270: [NewPM] implement SCC printing for -print-before-all/-print-after-all.
Mon, Oct 15, 12:38 AM
fedor.sergeev updated the summary of D53270: [NewPM] implement SCC printing for -print-before-all/-print-after-all.
Mon, Oct 15, 12:36 AM
fedor.sergeev updated the diff for D53270: [NewPM] implement SCC printing for -print-before-all/-print-after-all.

clang-formatted

Mon, Oct 15, 12:33 AM
fedor.sergeev created D53270: [NewPM] implement SCC printing for -print-before-all/-print-after-all.
Mon, Oct 15, 12:14 AM

Sat, Oct 13

fedor.sergeev created D53246: [NewPM] teach -passes= to emit meaningful error messages.
Sat, Oct 13, 10:07 AM

Fri, Oct 5

fedor.sergeev committed rL343898: [New PM][PassTiming] implement -time-passes for the new pass manager.
[New PM][PassTiming] implement -time-passes for the new pass manager
Fri, Oct 5, 3:33 PM
fedor.sergeev closed D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.
Fri, Oct 5, 3:33 PM
fedor.sergeev added inline comments to D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.
Fri, Oct 5, 11:19 AM

Thu, Oct 4

fedor.sergeev added inline comments to D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.
Thu, Oct 4, 9:05 AM
fedor.sergeev updated the diff for D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.

addressing comments - moving to unique_ptr, comments cleanup

Thu, Oct 4, 9:00 AM
fedor.sergeev committed rL343772: [PassTimingInfo] cleanup on TimingData's Timer handling.
[PassTimingInfo] cleanup on TimingData's Timer handling
Thu, Oct 4, 5:51 AM
fedor.sergeev added inline comments to D52814: [PassManager/Sanitizer] Enable usage of ported AddressSanitizer passes with -fsanitize=address .
Thu, Oct 4, 3:18 AM · Restricted Project, Restricted Project
fedor.sergeev added a comment to D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.

as for the per-pass-name aggregation - I was going to supply a follow-up patch that changes -time-passes from boolean option to -time-passes=<aggregation-type>.
Perhaps aggregation-type should be 'aggregate' by default, and 'invocations' providing per-invocation info.
Yet I dont want to just remove the possibility of getting a more fine-grained data that we have in this patch.

Thu, Oct 4, 3:07 AM
fedor.sergeev added inline comments to D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.
Thu, Oct 4, 2:33 AM

Tue, Oct 2

fedor.sergeev added inline comments to D52739: [PassManager/Sanitizer] Port of AddresSanitizer pass from legacy to new PassManager.
Tue, Oct 2, 6:04 AM · Restricted Project
fedor.sergeev updated the diff for D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.

running time-passes on longer pipelines revealed a problem with
making Timer managed by DenseMap in TimingData - we cant copy the Timer
on map expansion. Thus reverting back to keeping Timer* in that map
and new/deleting the instances.

Tue, Oct 2, 5:39 AM

Mon, Oct 1

fedor.sergeev added a comment to D52739: [PassManager/Sanitizer] Port of AddresSanitizer pass from legacy to new PassManager.

Thank you for moving this along!

You can greatly reduce this change by pulling most of the functionality out of the pass, and just wrapping it up in per-PassManager wrapper passes. You also don't have to move all that code into the header and can keep it local in the implementation.

Well, it will be a bit tricky to avoid moving the interfaces around, since AddressSanitizer contains quite a load of state, so you cant have a wrapper w/o introducing
definitions of this state other than playing tricks with indirection.
Though yes, making wrapper passes that have a pointer to opaque AddressSanitizer might do the dirty trick.

Mon, Oct 1, 1:12 PM · Restricted Project
fedor.sergeev abandoned D52169: [WIP] Getting rid of getAnalysisResult usage in PassManager.
Mon, Oct 1, 7:58 AM
fedor.sergeev added a comment to D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.

@chandlerc: ping?

Mon, Oct 1, 5:07 AM
fedor.sergeev added 1 blocking reviewer(s) for D51276: [New PM][PassTiming] implement -time-passes for the new pass manager: chandlerc.
Mon, Oct 1, 5:07 AM

Wed, Sep 26

fedor.sergeev committed rL343104: [PassTiming] cleaning up legacy PassTimingInfo interface. NFCI..
[PassTiming] cleaning up legacy PassTimingInfo interface. NFCI.
Wed, Sep 26, 6:03 AM
fedor.sergeev closed D52356: [PassTiming] cleaning up legacy PassTimingInfo interface. NFCI..
Wed, Sep 26, 6:03 AM
fedor.sergeev updated the diff for D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.

addressing comments

Wed, Sep 26, 3:01 AM
fedor.sergeev updated the summary of D52356: [PassTiming] cleaning up legacy PassTimingInfo interface. NFCI..
Wed, Sep 26, 2:34 AM

Tue, Sep 25

fedor.sergeev added inline comments to D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.
Tue, Sep 25, 6:16 AM
fedor.sergeev updated the diff for D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.

addressing review comments. In particular significantly simplifying memory management,
getting rid of extra allocations.

Tue, Sep 25, 6:13 AM

Mon, Sep 24

fedor.sergeev committed rL342896: [New PM][PassInstrumentation] IR printing support for New Pass Manager.
[New PM][PassInstrumentation] IR printing support for New Pass Manager
Mon, Sep 24, 9:10 AM
This revision was not accepted when it landed; it landed in state Needs Review.
Mon, Sep 24, 9:10 AM
fedor.sergeev added inline comments to D50923: [New PM][PassInstrumentation] IR printing support for New Pass Manager.
Mon, Sep 24, 8:11 AM
fedor.sergeev added a comment to D52356: [PassTiming] cleaning up legacy PassTimingInfo interface. NFCI..

Is that remaining change still useful? Does it make sense to revert instead?

At the very least we need the move from LegacyPassManager.cpp into PassTimingInfo.cpp, to consolidate different implementations of time-passes in a single source file.
You can see this change (compared to pre-rL340872) as a move with cleanup.

Mon, Sep 24, 7:20 AM
fedor.sergeev added a comment to D52356: [PassTiming] cleaning up legacy PassTimingInfo interface. NFCI..

is this in some sense a revert of rL340872? Which parts of that change remain?

It is not a complete revert, but definitely very close to it.
One of the changes that were not restored to the original form is removal of createTheTimeInfo, which had been replaced with init() and still remains in that form now.
Functionally, the biggest change from pre-L340872 was introduced a bit later - PassIDCountMap that counts instances and adds #instance-numbers to the report.
And it remains "unreverted" in this change.

Mon, Sep 24, 7:20 AM

Fri, Sep 21

fedor.sergeev committed rL342778: [New PM][PassInstrumentation] Adding PassInstrumentation to the AnalysisManager….
[New PM][PassInstrumentation] Adding PassInstrumentation to the AnalysisManager…
Fri, Sep 21, 3:11 PM
fedor.sergeev closed D51275: [New PM][PassInstrumentation] Adding PassInstrumentation to the AnalysisManager runs.
Fri, Sep 21, 3:11 PM
fedor.sergeev updated the summary of D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.
Fri, Sep 21, 6:17 AM
fedor.sergeev updated the summary of D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.
Fri, Sep 21, 6:16 AM
fedor.sergeev updated the summary of D52356: [PassTiming] cleaning up legacy PassTimingInfo interface. NFCI..
Fri, Sep 21, 6:15 AM
fedor.sergeev added inline comments to D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.
Fri, Sep 21, 6:07 AM
fedor.sergeev edited dependencies for D51276: [New PM][PassTiming] implement -time-passes for the new pass manager, added: 1; removed: 1.
Fri, Sep 21, 6:04 AM
fedor.sergeev removed a dependent revision for D51632: [New PM][PassInstrumentation] enhancing PassInstrumentation with PassManager tracking: D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.
Fri, Sep 21, 6:04 AM
fedor.sergeev added a dependent revision for D52356: [PassTiming] cleaning up legacy PassTimingInfo interface. NFCI.: D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.
Fri, Sep 21, 6:04 AM
fedor.sergeev updated the diff for D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.

rebased on top of D52356 cleanup

Fri, Sep 21, 5:57 AM
fedor.sergeev created D52356: [PassTiming] cleaning up legacy PassTimingInfo interface. NFCI..
Fri, Sep 21, 5:54 AM
fedor.sergeev updated the diff for D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.

adding TimePasses to StandardInstrumentations, cleaning up a bit.

Fri, Sep 21, 5:04 AM
fedor.sergeev abandoned D52329: [New PM] adding helper that manages standard instrumentations.

Thats right. Merging this fix with PrintIR (D50923), where printing callbacks will reside in StandardInstrumentations.cpp.

Fri, Sep 21, 4:25 AM
fedor.sergeev updated the summary of D50923: [New PM][PassInstrumentation] IR printing support for New Pass Manager.
Fri, Sep 21, 4:25 AM
fedor.sergeev updated the diff for D50923: [New PM][PassInstrumentation] IR printing support for New Pass Manager.

moving PrintIR callbacks into StandardInstrumentations.

Fri, Sep 21, 4:22 AM

Thu, Sep 20

fedor.sergeev updated the summary of D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.
Thu, Sep 20, 3:49 PM
fedor.sergeev created D52329: [New PM] adding helper that manages standard instrumentations.
Thu, Sep 20, 3:45 PM
fedor.sergeev updated the diff for D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.

separated legacy and newpm implementations, introducing TimePassesHelper object that
manages callbacks and keeps timing data. That in particular allows to avoid
singleton TimeInfo and mutex - all the weird stuff initially inherited from
a shared implementation.

Thu, Sep 20, 3:44 PM
fedor.sergeev updated the diff for D51275: [New PM][PassInstrumentation] Adding PassInstrumentation to the AnalysisManager runs.

rebased

Thu, Sep 20, 3:42 PM
fedor.sergeev updated the diff for D50923: [New PM][PassInstrumentation] IR printing support for New Pass Manager.

rebased, removed PassBuilder::registerDefaultInstrumentation.
Subsequent patches will add a different way to manage default instrumentations.

Thu, Sep 20, 3:42 PM
fedor.sergeev committed rL342664: [New PM] Introducing PassInstrumentation framework.
[New PM] Introducing PassInstrumentation framework
Thu, Sep 20, 10:10 AM
fedor.sergeev closed D47858: [New PM] Introducing PassInstrumentation framework.
Thu, Sep 20, 10:10 AM
fedor.sergeev updated the diff for D47858: [New PM] Introducing PassInstrumentation framework.

changed getName helper in unittests to return std::string instead of StringRef
to avoid addressing temporaries after their lifetime end.Z

Thu, Sep 20, 8:06 AM
fedor.sergeev reopened D47858: [New PM] Introducing PassInstrumentation framework.

Sanitizer buildbots failed on CGSCC tests due to improper getName handling (StringRef on a temporary std::string cant fly well)

Thu, Sep 20, 8:06 AM

Wed, Sep 19

fedor.sergeev committed rL342597: [New PM] Introducing PassInstrumentation framework.
[New PM] Introducing PassInstrumentation framework
Wed, Sep 19, 3:45 PM
fedor.sergeev closed D47858: [New PM] Introducing PassInstrumentation framework.
Wed, Sep 19, 3:45 PM
fedor.sergeev updated the diff for D47858: [New PM] Introducing PassInstrumentation framework.

adding a hack to PassBuilderCallbacks unittest that allows
to use llvm::Any in mocks.

Wed, Sep 19, 11:29 AM
fedor.sergeev reopened D47858: [New PM] Introducing PassInstrumentation framework.

Was reverted because of massive buildbot failures - all failing to compile PassBuilderCallbacks unit-test, like this:

Wed, Sep 19, 11:28 AM
fedor.sergeev committed rL342552: Revert rL342544: [New PM] Introducing PassInstrumentation framework.
Revert rL342544: [New PM] Introducing PassInstrumentation framework
Wed, Sep 19, 7:56 AM
fedor.sergeev added a reverting commit for rL342544: [New PM] Introducing PassInstrumentation framework: rL342552: Revert rL342544: [New PM] Introducing PassInstrumentation framework.
Wed, Sep 19, 7:56 AM
fedor.sergeev committed rL342544: [New PM] Introducing PassInstrumentation framework.
[New PM] Introducing PassInstrumentation framework
Wed, Sep 19, 5:28 AM
fedor.sergeev closed D47858: [New PM] Introducing PassInstrumentation framework.
Wed, Sep 19, 5:27 AM
fedor.sergeev added inline comments to D47858: [New PM] Introducing PassInstrumentation framework.
Wed, Sep 19, 3:54 AM
fedor.sergeev added a comment to D51632: [New PM][PassInstrumentation] enhancing PassInstrumentation with PassManager tracking.

I don't fully understand the rationale behind this. How is this different compared to a before/after instrumentation matching the PassManagers?

Wed, Sep 19, 3:19 AM

Tue, Sep 18

fedor.sergeev added inline comments to D47858: [New PM] Introducing PassInstrumentation framework.
Tue, Sep 18, 2:57 PM
fedor.sergeev added inline comments to D47858: [New PM] Introducing PassInstrumentation framework.
Tue, Sep 18, 2:46 PM
fedor.sergeev updated the summary of D47858: [New PM] Introducing PassInstrumentation framework.
Tue, Sep 18, 2:07 PM
fedor.sergeev updated the diff for D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.

fixup

Tue, Sep 18, 1:59 PM
fedor.sergeev updated the diff for D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.

cleanup

Tue, Sep 18, 1:59 PM
fedor.sergeev updated the summary of D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.
Tue, Sep 18, 1:55 PM
fedor.sergeev updated the diff for D51276: [New PM][PassTiming] implement -time-passes for the new pass manager.

rebasing on top of new changes and removing pass-managers tracking.
Now it collects timing data per-pass-invocation.

Tue, Sep 18, 1:54 PM
fedor.sergeev updated the diff for D51275: [New PM][PassInstrumentation] Adding PassInstrumentation to the AnalysisManager runs.

rebased

Tue, Sep 18, 1:46 PM
fedor.sergeev updated the diff for D50923: [New PM][PassInstrumentation] IR printing support for New Pass Manager.

rebased

Tue, Sep 18, 1:46 PM
fedor.sergeev updated the diff for D51632: [New PM][PassInstrumentation] enhancing PassInstrumentation with PassManager tracking.

rebased

Tue, Sep 18, 1:46 PM
fedor.sergeev updated the diff for D47858: [New PM] Introducing PassInstrumentation framework.

addressing most of the comments - cleanup, unittests etc
(except getAnalysisResult, for which see D52169).

Tue, Sep 18, 1:46 PM

Mon, Sep 17

fedor.sergeev added inline comments to D47858: [New PM] Introducing PassInstrumentation framework.
Mon, Sep 17, 1:33 PM
fedor.sergeev updated the summary of D47858: [New PM] Introducing PassInstrumentation framework.
Mon, Sep 17, 1:10 PM
fedor.sergeev updated the diff for D51632: [New PM][PassInstrumentation] enhancing PassInstrumentation with PassManager tracking.

rebased

Mon, Sep 17, 12:54 PM
fedor.sergeev updated the diff for D51275: [New PM][PassInstrumentation] Adding PassInstrumentation to the AnalysisManager runs.

rebased

Mon, Sep 17, 12:54 PM
fedor.sergeev updated the diff for D47858: [New PM] Introducing PassInstrumentation framework.

addressing most of the comments except getAnalysisResults.

Mon, Sep 17, 12:41 PM
fedor.sergeev added inline comments to D51207: Introduce llvm.experimental.widenable_condition intrinsic.
Mon, Sep 17, 8:05 AM
fedor.sergeev created D52169: [WIP] Getting rid of getAnalysisResult usage in PassManager.
Mon, Sep 17, 6:19 AM

Sep 15 2018

fedor.sergeev committed rL342325: [NFC] minor cleanup in PassManagerInternal.h.
[NFC] minor cleanup in PassManagerInternal.h
Sep 15 2018, 7:57 AM
fedor.sergeev added a comment to D47858: [New PM] Introducing PassInstrumentation framework.

Thanks for a deep review.

Sep 15 2018, 7:28 AM

Sep 14 2018

fedor.sergeev added a comment to D50923: [New PM][PassInstrumentation] IR printing support for New Pass Manager.

This implementation is modeled unnecessarily close to the legacy behavior. opt should just manually add the printer instrumentation if a print option is given.
In particular., this shouldn't use the ShouldPrint* functions.

I want all the debugging options to work the same manner whether it is opt or any other tool/way to run the pipeline
(say, in our JIT compiler we do sometimes use -print options). And I want them to work the same way both in legacy and new pass manager.
That means the main controlling interface should better be joined (and thats where ShouldPrint come into play).

This way there's no need to involve the PassBuilder API,

PassBuilder API is there again for an easy setup in tools *like* opt.
Somehow I thought providing a central way to install all the "blessed" callbacks would be adequate, even if right now there is only a single tool that calls it.

and you also don't pay for the instrumentation if you don't want to print.

Callbacks are not installed if printing is not enabled.
And empty instrumentation iteration is a price that we will always pay for simplicity sake. As discussed with Chandler.

Sep 14 2018, 2:50 PM
fedor.sergeev added inline comments to D51275: [New PM][PassInstrumentation] Adding PassInstrumentation to the AnalysisManager runs.
Sep 14 2018, 2:06 PM
fedor.sergeev updated the summary of D47858: [New PM] Introducing PassInstrumentation framework.
Sep 14 2018, 11:09 AM
fedor.sergeev updated the summary of D47858: [New PM] Introducing PassInstrumentation framework.
Sep 14 2018, 11:06 AM
fedor.sergeev added a comment to D47858: [New PM] Introducing PassInstrumentation framework.

At this point I'm bikeshedding: Should getAnalysisResultgo into the Internal header?

Hmm.. I have no preference here. I can easily do that.
Chandler?

Sep 14 2018, 11:05 AM
fedor.sergeev abandoned D51973: [New PM] adding unit tests for PassInstrumentation.

These tests were split and added to the corresponding PassInstrumentation.

Sep 14 2018, 9:31 AM