Could you please also add tests for the !noundef case? (Preferably one with the first load noundef and one with the second. I'm not sure you're checking the right one currently.)
- Queries
- All Stories
- Search
- Advanced Search
- Transactions
- Transaction Logs
Advanced Search
Today
Implementation looks fine, but this needs more test coverage.
LGTM
LGTM
LGTM
Yesterday
Nearly there, I think...
All of the test changes are, to my eye, semantically the same.
LGTM
LGTM
LGTM
It looks like this broke the expensive checks build (x86-64-baseptr.ll and i386-baseptr.ll fail).
Upload correct patch.
Improve comments.
LGTM
Can you please rebase over https://github.com/llvm/llvm-project/commit/d0de2c51c9a9fc0fedb97ee98f61ce08cb34972b? I hope that will clarify what the actual change here is, because making foldOperationIntoSelectOperand() fallible doesn't make a whole lot of sense.
In D146423#4208625, @mkazantsev wrote:Actually it was I who proposed Dmitry to split it off into a separate analysis. The main advantage of this approach is that we can then create some static analysis tools that don't necessarily modify the IR to give you the same info.
LGTM
Mon, Mar 20
LGTM
LGTM. Assuming you don't have commit access, can you tell me the Name <email> to use for the commit?
FWIW, I am quite unhappy with the implementation quality of this pass, but I don't think I have the energy to deal with this. In the future, due diligence for pass enablement needs to include a review of the pass implementation by a domain expert, if this was not already done as part of the initial implementation. (Domain expert = SCEV reviewer in this context.)
In D146424#4206466, @tlively wrote:Thanks! I didn't know about this functionality. Is there a generally accepted mechanism to mark intrinsics as experimental so that there is no expectation that they will be auto-upgraded like this?
Using max exit count is incorrect. The computed max may be larger than the actual trip count of this exit.
Change looks fine, but is missing a test case.
ping ;)
Sun, Mar 19
I haven't looked in detail what you're doing here, but you're clearly looking for the ConstantRange class. makeExactICmpRegion(), add(), sub(), binaryNot(), etc.
In D144445#4204759, @nikic wrote:Extracting the stride from GEPs turned out to be trickier than I expected...
LG
Extracting the stride from GEPs turned out to be trickier than I expected...
The !noundef preservation fixes have landed, so I think this patch can now be adjusted to keep the metadata if !noundef is present on the dominating load.
Sat, Mar 18
This is not generally legal for div/rem, see https://alive2.llvm.org/ce/z/2iiR26 using one of your tests. This is only legal if the operation is speculatable.
LGTM
LGTM
Fri, Mar 17
Please add a PhaseOrdering test that demonstrates why it it useful to do this as part of ArgumentPromotion, rather than letting other passes clean this up.
In D146233#4200982, @efriedma wrote:Is the issue here actually specific to global variables? I mean, you can't mark a local variable noalias, but noalias/TBAA metadata can apply to local variables.
LGTM
LG
Thu, Mar 16
In D146233#4200306, @jdoerfert wrote:Can we make this less drastic by checking the global. If it is internal and doesn't have its address taken there are no aliasing pointers, I think/hope.
LG
In D146217#4199478, @sdesmalen wrote:In this case all comparisons just fold to true (but could also fold to any other value).
What is the reason that the IR doesn't explicitly return poison in that case? (i.e. ret i1 poison)
Rebase over additional tests for the poison case. In this case all comparisons just fold to true (but could also fold to any other value).