Thu, May 9
Tue, May 7
Mon, May 6
The current interfaces definitely do not provide anything like that. As I recall, most of the use cases requiring canMergeStoresTo involve ad hoc ways to locally declare a type/operation invalid localized to the specific target, so I suggest the just marginally expanding hte interface to capture the one issue we've seen so far (no-implict-float) and defer any deeper analysis for when we run into it.
Sun, May 5
This is okay modulo nits, but let's land the TokenFactor operand size limiting first as it also implicitly bounds things.
Thu, May 2
Notes inline, but I think the majority of the compile time improvements come from keepign TokenFactor operand counts bounded. This should be changed to do reflect that.
Tue, Apr 30
Fri, Apr 26
I think, make it unconditional.
I was thinking things pending from the folding optimization in getNode, but I missed that it was the target specific one so it should be fine. That said, I still think it's better to do it unconditionally so it'll be pruned by default with the future additio of Listener-based pruning if that proves too expensive.
I worry this is just fix just the dangling nodes as we see them. A brief glance at the AND construction gives us space for this to happen again. I'd much rather we do the removal check unconditionally or leverage something like
DAGUpdateListener to get a more fundamental measure of what nodes may be prunable.
Wed, Apr 24
DAGCombiner now has infrastructure to strip away nodes that were created but unused in during a visit. It probably makes sense to do something similar in ISel
Apr 18 2019
Apr 2 2019
It's not sufficient to check if you can merge two stores into a valid node; there are backends where you need 4 or more to get a legal merged store.
Mar 29 2019
rL357283 supersedes this.
Mar 28 2019
Consider inserted nodes for pruning.
Defer Worklist modification in NodeInserter to follow up patch (D58070).
Now that lifetime node hashing and TokenFactor cleanup has happened, factor out Dead Store improvements as they are no longer needed to prevent regressions.
Mar 27 2019
Debug test also changes. h
Initial commit reverted due to Halide compile time explosion.
Address lingering test comments.
Mar 26 2019
Landed in rL356996
Extract copied code into helper and format
Revert mips test changes
This seems like it a natural thing to do as with the X86 backend, but since it doesn't make any test change differences, perhap it is unecessary.
Summarizing offline discussion with jyknight for future reference:
Rebase to tip before landing.
Mar 25 2019
Address James' Comments.
Check HasSideEffects in analysis for inlineasm.
Mar 18 2019
Address James' comments.
It fell off the end of my work queue, but yes.
Copy over Simon's suggestion.
Mar 15 2019
Realized explanatory comment and associate fixup had been lost in patch stack. Folding it back in.
Mar 13 2019
Mar 12 2019
Mar 8 2019
Abandoning this in favor of D59039
Mar 6 2019
This is a refactored and rebased version of D49691 so that it looks reasonable on Phabricator. I've factored out a initial NFC patch (the first snapshot in history) to highlight the actual functional change.
patch on to p of refactoring.
NFC Refactoring of GatherAllAliases on top of which the patch will occur.
Mar 4 2019
Feb 28 2019
Feb 27 2019
Rebase to tip and add FIXME for regression.
Rebase after some cleanups. Add comments on regressions test cases. Most of these are exposing PR40881. '
The remain case (vsel-cmp-load.ll) appears to be a missing revisitation some nodes