Conversation
Removing this seems to have caused SCEV to stall on the Mullapudi overlap test on x86-32. This was the backup plan - just don't promise the second GEP is in-bounds.
mcourteaux
left a comment
There was a problem hiding this comment.
Shouldn't the "in-boundness" be a parameter? And only when you peel off a constant, you recurse and call it with in_bounds=false?
|
Hmm, it seems that it rebreaks the |
|
Yeah probably. I'll try that. It turns out "inbounds" also promises the base pointer is in bounds, which it isn't. So I'll need to relax both GEPs |
|
Unfortunately if I make all the metadata accurate the stall comes back. The access undef indexing test relies on what would be unsigned wrapping in some index computation, and LLVM is working very hard to prove the absence of wrapping. It early-outs if we promise there is none, but there legitimately is. The LLVM pass in question has some builtin safeguards to stop it doing too much work, but they don't seem to be triggering. I'm trying to find out if we can structure things in a way that it can handle more gracefully. |
|
Closed in favor of #8793 |
Removing this seems to have caused SCEV to stall on the Mullapudi overlap test on x86-32. This was the backup plan - just don't promise the second GEP is in-bounds.
Related: #8768 #8766.