SuccessChanges

Summary

  1. [IndVars] Eliminate loop exits with equivalent exit counts (details)
  2. [IndVars] Add a todo to reflect a further oppurtunity identified in (details)
  3. [X86] Check Subtarget.hasSSE3() before calling shouldUseHorizontalOp and (details)
  4. [Attributor] Teach AANoCapture to use information in-flight more (details)
  5. [Attributor][FIX] Silence sign-compare warning (details)
Commit 8cbcd2f484a2bc6720d9fd66b71aeaf50a49bc70 by listmail
[IndVars] Eliminate loop exits with equivalent exit counts
We can end up with two loop exits whose exit counts are equivalent, but
whose textual representation is different and non-obvious. For the
sub-case where we have a series of exits which dominate one another
(common), eliminate any exits which would iterate *after* a previous
exit on the exiting iteration.
As noted in the TODO being removed, I'd always thought this was a good
idea, but I've now seen this in a real workload as well.
Interestingly, in review, Nikita pointed out there's let another
oppurtunity to leverage SCEV's reasoning.  If we kept track of the min
of dominanting exits so far, we could discharge exits with EC >= MDE.
This is less powerful than the existing transform (since later exits
aren't considered), but potentially more powerful for any case where
SCEV can prove a >= b, but neither a == b or a > b.  I don't have an
example to illustrate that oppurtunity, but won't be suprised if we find
one and return to handle that case as well. 
Differential Revision: https://reviews.llvm.org/D69009
llvm-svn: 375379
The file was modifiedllvm/test/Transforms/IndVarSimplify/loop-predication.ll
The file was modifiedllvm/lib/Transforms/Scalar/IndVarSimplify.cpp
The file was modifiedllvm/test/Transforms/IndVarSimplify/pr38674.ll
The file was modifiedllvm/test/Transforms/IndVarSimplify/eliminate-exit.ll
Commit e884843d7839043308640952ad84659619eaca44 by listmail
[IndVars] Add a todo to reflect a further oppurtunity identified in
D69009
Nikita pointed out an oppurtunity, might as well document it in the
code.
llvm-svn: 375380
The file was modifiedllvm/lib/Transforms/Scalar/IndVarSimplify.cpp
Commit e78414622ddbc4f696d1d16ef8db918f732a0a88 by craig.topper
[X86] Check Subtarget.hasSSE3() before calling shouldUseHorizontalOp and
emitting X86ISD::FHADD in LowerUINT_TO_FP_i64.
This was a regression from r375341.
Fixes PR43729.
llvm-svn: 375381
The file was modifiedllvm/test/CodeGen/X86/scalar-int-to-fp.ll
The file was modifiedllvm/lib/Target/X86/X86ISelLowering.cpp
Commit 3839b57f7306bdca794bd033f36bff02f68cf0f0 by jdoerfert
[Attributor] Teach AANoCapture to use information in-flight more
aggressively
AAReturnedValues, AAMemoryBehavior, and AANoUnwind, can provide
information that helps during the tracking or even justifies no-capture.
We now use this information and enable no-capture in some test cases
designed a long while a ago for these cases.
llvm-svn: 375382
The file was modifiedllvm/test/Transforms/FunctionAttrs/read_write_returned_arguments_scc.ll
The file was modifiedllvm/test/Transforms/FunctionAttrs/arg_nocapture.ll
The file was modifiedllvm/lib/Transforms/IPO/Attributor.cpp
The file was modifiedllvm/test/Transforms/FunctionAttrs/nocapture.ll
The file was modifiedllvm/test/Transforms/FunctionAttrs/nonnull.ll
The file was modifiedllvm/test/Transforms/FunctionAttrs/arg_returned.ll
Commit 9d5ad5e45fe40a24ceb11d6f9b046d8077c90778 by jdoerfert
[Attributor][FIX] Silence sign-compare warning
llvm-svn: 375384
The file was modifiedllvm/lib/Transforms/IPO/Attributor.cpp