User Details
- User Since
- Feb 10 2017, 1:36 AM (318 w, 6 d)
Sep 10 2020
LGTM
Sep 9 2020
NewPM use seems to be fine.
A few relatively minor comments that I would like to see addressed.
Jul 20 2020
LGTM.
Other people had plenty of time to look at this.
Jun 10 2020
I'm not sure if introducing base for standard instrumentation classes (Instrument/Instruments) is a good change or not.
What problem does it solve?
Anyway that part seems to be rather orthogonal to the checker itself.
I would like to have it separated - either introduce Instrument/Instruments thing before the checker and then use it,
OR implement the checker the same way as other standard instrumentations are done (just as separate members) and only then refactor it all into Instrument/Instruments.
May 17 2020
Apr 26 2020
it would be great if you could share the unreduced reproducer, to verify it is the same issue.
This is our original reproducer:
@fhahn, we also had a crash downstream on our fuzzer run, if you still need a reproducer I can try reducing our failure.
Apr 23 2020
LGTM, thanks for cleaning this up!
Apr 22 2020
Look good to me, but I would like to hear other opinions...
Apr 8 2020
LGTM, please give others at least 24h to respond.
LGTM.
Looks good to me, though I would like somebody else to check if running loopSimplify instead of simply bailing out is appropriate here.
Folks, we have a problem with this fix - when running a build that dynamically links tools with libLLVM.so (LVM_LINK_LLVM_DYLIB) we have massive failures on llvm-readobj
which asserts because it now has a conflict between MC "-W" and readobj "-W" command line options.
Seems like moving DWARFStreamer.cpp into the library w/o first removing its
static mc::RegisterMCTargetOptionsFlags MOF;
was a mistake.
Mar 31 2020
This appears to cause suboptimal codegen on a relatively simple pattern:
https://bugs.llvm.org/show_bug.cgi?id=45378
Mar 12 2020
@lebedev.ri I am not sure what your logic implied here; maybe instead of removal of assert this check should be a part of if for profitability reasons.
In review where this assert was introduced in one of the previous versions of it there was a check instead of assert (see line 261+: https://reviews.llvm.org/D69617?id=227953)
I believe doing this check makes sense.
Mar 9 2020
As an explanation why PassInstrumentation is a better choice - you do not need to manually extend all the individual pass managers,
so you never miss one. This particular change missed at least two of them: RepeatPass and DevirtSCCRepeatedPass.
I'm sorry for the late comment, but this should have really been done through the PassInstrumentation framework.
It looks like a classic use-case.
Mar 3 2020
We also found this patch to cause problems with our downstream testing, though I do not have good reproducers as of right now.
Feb 18 2020
Makes sense to add rationale like this as a paragraph to revision description.
Feb 3 2020
Feb 2 2020
Curiously, just recently we had a similar case in our downstream pipeline, though we had a GVN splitting loop backedge and leading to a loss of a loop form (by making a non-exiting latch).
Solved by disabling load-pre in a separate responsible GVN instance, though this control looks more appropriate.
Jan 27 2020
setting request-changes state to make it obvious that there are some questions here I would like to see answered.
Jan 23 2020
unittest added that verifies exit code of successful loop-rotate
Jan 21 2020
fixing return value on subsequent iterations
converting recursion into inner loop
Hmm... phabricator is good in white-space diffs elimination! :)
made this change off by default.
improving some comments
Jan 20 2020
Jan 17 2020
adding CHECK-LABEL to the test so it passes with lit
Jan 16 2020
reintroduced default parameter for Legacy pass constructor
(it is necessary for PassSupport.h proper operations and not otherwise used)
Jan 15 2020
reformatting after the last update
fixing NoMemDepAnalysis use in legacy pass
removed old pass entry
Jan 14 2020
That should go as a followup.
I did not plan to do that right now, but well, you got a point.
Will post a review for that.
updated comments
Jan 6 2020
LGTM.
Dec 13 2019
Is there any testing that does enable attributor?
Okey, I did find a fair amount of tests that run individual -attributor *or* -passes=attributor (with -attributor-disable=false).
Are there any near plans to enable attributor (setting -attributor-disable=false by default)?
So, this enables Attributor pass, but in fact has all its functionality disabled unless -attributor-disable is set to false.
Is there any testing that does enable attributor?
If yes, then I would like to see this testing being run with new pass manager as well.
Is there a particular reason for choosing this spot in pipeline?
I see that in legacy pipeline Attributor follows IPSCCP/CVP, and here it goes right before.
Dec 12 2019
Overall I'm fine with this.
Bikeshedding-wise, getPIC seems to be overly cryptic to me.
Do you believe full name getPassInstrumentationCallbacks is too much?
Dec 10 2019
Well, I kinda figure that from the code behavior right now, however is it really by design or just happens to work now?
Seeing that assembler becomes very intelligent now I would rather have a strict guarantee similar to "hardcode" thing that you have here that protects my sequence
rather than relying on a fact that in current settings moving my label by 8 does not appear to be profitable to assembler.
Dec 9 2019
What if I insert explicit align(8) right *after* the sequence?
In our case it was
andl $1, %eax
but it does not matter that much.
Dec 5 2019
FYI: I did close the bug as fixed after verifying that the fix works for me.
Dec 3 2019
Hangs on a moderately small piece (~150 lines) of x86 assembly, filed a bug on it here:
Just FYI for now as I'm trying to dig futher...
I have been trying this fix in our downstream environment and managed to get a hang with this backtrace:
Nov 13 2019
Nov 12 2019
The change you suggest, doesn't cause the crash.
would you mind to add that test here?
It should exercise a path of logic where argument comes through SimplifiedValues, so it is worth having it.
Can you add a test similar to what you have here that excercises indirect call through a parameter?
Say, do
define void @func1() { %t = bitcast void ()* @func3 to void ()* tail call void @func2(void()* %t) ret void } define void @func2(void()* %f) { tail call void %f() ret void }
and then......
define void @func6() { %t2 = bitcast void (void()*)* @func2 to void (void()*)* %t3 = bitcast void ()* @func3 to void ()* tail call void %t2(void()* %t3) ret void }
This results in recursive call to func2+ and your fix should handle it just right.
llvm/test/Transforms/Inline/pr35469.ll
btw, I would rather have this test named by its functionality and not by PR number.
Oct 29 2019
Oct 24 2019
slightly modified test
Sep 18 2019
Great, thanks a lot!
Ugh... I was looking for that use in the new code, but it is there in the old code, sorry.
I might be in need for the morning coffee, but I cant find the actual use of UP.FullUnrollMaxCount...
Sep 7 2019
Aug 27 2019
This reproducer fails with assertion:
] cat reduced.ll target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128-ni:1" target triple = "x86_64-unknown-linux-gnu"
Aug 13 2019
LGTM.
Thanks for addressing this!
Aug 9 2019
Which part of the basics specifically?
Also, avoid adding anything into the adaptor except just basic functionality of passing control to the target pass.
(say, as I commented already - skip remarks stuff altogether). This commit better contain the general comments on what MachineFunction is
and basics required for PassManager/Adaptor to start working, and nothing else.
Since you will have to add PassInstrumentation interfaces in order for PassManager to operate you might be able to add its usage into PassAdaptor as well.
But that could be done as a follow up change.
Okey, everything you said there makes perfect sense. Thanks for clarification.