dmgreen added a comment.

It looks like there is quite a lot more optimization that happens to the 
function being always-inlined (__SSAT) before this change. Through multiple 
rounds of instcombine, almost to the end of the pass pipeline. The new version 
runs a lot less before inlining, only running instcombine->simplifycfg and not 
seeing another instcombine to clean up the results. Is that because the 
AlwaysInlinePass is a module pass and it now only runs the passes up to that 
point?

It does look like there might be a chance to undo the transform, as opposed to 
prevent the transform that blocks it. Something like 
https://alive2.llvm.org/ce/z/qHtPqz seems to happen at at least one point. 
Might that be more preferable?

There are some other changes I#m seeing though, from the same function inlined 
into different routine. This one for example seems to be not longer applying to 
canonicalizeClampLike, so the ssat doesn't get created. 
https://godbolt.org/z/qMW44qfz4. That doesn't seem to be easily undoable 
without knowing the value is positive though 
https://alive2.llvm.org/ce/z/v9YdaK.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D143624/new/

https://reviews.llvm.org/D143624

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to