- User Since
- Feb 10 2017, 1:36 AM (87 w, 4 d)
fixing return code for -passes-ep* tests (should not be failing).
adding error handling for repeated EP pipeline parsing.
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.
addressing the remaining comment
Sat, Oct 13
Fri, Oct 5
Thu, Oct 4
addressing comments - moving to unique_ptr, comments cleanup
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.
Tue, Oct 2
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.
Mon, Oct 1
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.
Wed, Sep 26
Tue, Sep 25
addressing review comments. In particular significantly simplifying memory management,
getting rid of extra allocations.
Mon, Sep 24
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.
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.
Fri, Sep 21
rebased on top of D52356 cleanup
adding TimePasses to StandardInstrumentations, cleaning up a bit.
Thats right. Merging this fix with PrintIR (D50923), where printing callbacks will reside in StandardInstrumentations.cpp.
moving PrintIR callbacks into StandardInstrumentations.
Thu, Sep 20
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.
rebased, removed PassBuilder::registerDefaultInstrumentation.
Subsequent patches will add a different way to manage default instrumentations.
changed getName helper in unittests to return std::string instead of StringRef
to avoid addressing temporaries after their lifetime end.Z
Sanitizer buildbots failed on CGSCC tests due to improper getName handling (StringRef on a temporary std::string cant fly well)
Wed, Sep 19
adding a hack to PassBuilderCallbacks unittest that allows
to use llvm::Any in mocks.
Was reverted because of massive buildbot failures - all failing to compile PassBuilderCallbacks unit-test, like this:
Tue, Sep 18
rebasing on top of new changes and removing pass-managers tracking.
Now it collects timing data per-pass-invocation.
addressing most of the comments - cleanup, unittests etc
(except getAnalysisResult, for which see D52169).
Mon, Sep 17
addressing most of the comments except getAnalysisResults.
Sep 15 2018
Thanks for a deep review.
Sep 14 2018
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.
Hmm.. I have no preference here. I can easily do that.
These tests were split and added to the corresponding PassInstrumentation.