| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 86635
|
|
|
|
|
|
| |
simplification, this handles the foldable fcmp x,x cases among many others.
llvm-svn: 86627
|
|
|
|
| |
llvm-svn: 86625
|
|
|
|
|
|
|
| |
Simplify[IF]Cmp pieces. Add some predicates to CmpInst to
determine whether a predicate is fp or int.
llvm-svn: 86624
|
|
|
|
|
|
| |
it to a normal binop. Patch by Alastair Lynn, testcase by me.
llvm-svn: 86524
|
|
|
|
|
|
| |
used by a chain of other PHIs.
llvm-svn: 86503
|
|
|
|
|
|
|
|
|
| |
when both the source and dest are illegal types, since it would cause
the phi to grow (for example, we shouldn't transform test14b's phi to
a phi on i320). This fixes an infinite loop on i686 bootstrap with
phi slicing turned on, so turn it back on.
llvm-svn: 86483
|
|
|
|
|
|
| |
(SliceUpIllegalIntegerPHI) disabled.
llvm-svn: 86480
|
|
|
|
|
|
| |
llvm-gcc bootstrap.
llvm-svn: 86478
|
|
|
|
|
|
|
|
| |
not turn a PHI in a legal type into a PHI of an illegal type, and
add a new optimization that breaks up insane integer PHI nodes into
small pieces (PR3451).
llvm-svn: 86443
|
|
|
|
|
|
|
|
|
|
| |
(eliminating some extends) if the new type of the
computation is legal or if both the source and dest
are illegal. This prevents instcombine from changing big
chains of computation into i64 on 32-bit targets for
example.
llvm-svn: 86398
|
|
|
|
| |
llvm-svn: 86235
|
|
|
|
|
|
| |
from various APIs, addressing PR5325.
llvm-svn: 86231
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to EmitGEPOffset.
Implement some new transforms for optimizing
subtracts of two pointer to ints into the same vector. This happens
for C++ iterator idioms for example, stringmap takes a const char*
that points to the start and end of a string. Once inlined, we want
the pointer difference to turn back into a length.
This is rdar://7362831.
llvm-svn: 86021
|
|
|
|
|
|
| |
of the two loads agree. Propagate that onto the new store.
llvm-svn: 85772
|
|
|
|
|
|
|
| |
not the max. This didn't matter until the previous patch because
instcombine would refuse to sink loads with differenting alignments.
llvm-svn: 85738
|
|
|
|
| |
llvm-svn: 85737
|
|
|
|
|
|
|
|
| |
phis, it didn't preserve the alignment of the load. This is a missed
optimization of the alignment is high and a miscompilation when the
alignment is low.
llvm-svn: 85736
|
|
|
|
| |
llvm-svn: 85671
|
|
|
|
| |
llvm-svn: 85655
|
|
|
|
| |
llvm-svn: 85641
|
|
|
|
|
|
|
| |
PHI operands by the predecessor order, sort them by the order used by the
first PHI in the block. This is still suffucient to expose duplicates.
llvm-svn: 85634
|
|
|
|
|
|
|
| |
This helps expose duplicate PHIs, which will make it easier for them
to be eliminated.
llvm-svn: 85623
|
|
|
|
| |
llvm-svn: 85286
|
|
|
|
| |
llvm-svn: 85185
|
|
|
|
|
|
| |
to free()
llvm-svn: 85181
|
|
|
|
|
|
|
| |
Remove LowerAllocations pass.
Update some more passes to treate free calls just like they were treating FreeInst.
llvm-svn: 85176
|
|
|
|
|
|
| |
can safely use the NSW bit on the Add.
llvm-svn: 85164
|
|
|
|
|
|
|
| |
All of the 'demorgan' related xforms need to use
dyn_castNotVal, not m_Not.
llvm-svn: 85119
|
|
|
|
| |
llvm-svn: 85090
|
|
|
|
|
|
| |
not (or (icmp, icmp)) -> and(icmp, icmp)
llvm-svn: 85085
|
|
|
|
|
|
| |
CmpInst::isSigned.
llvm-svn: 85037
|
|
|
|
|
|
|
| |
Update all analysis passes and transforms to treat free calls just like FreeInst.
Remove RaiseAllocations and all its tests since FreeInst no longer needs to be raised.
llvm-svn: 84987
|
|
|
|
|
|
| |
subclass of AllocationInst, so it no longer is necessary.
llvm-svn: 84969
|
|
|
|
| |
llvm-svn: 84841
|
|
|
|
|
|
|
| |
to libanalysis. Instcombine shrinking... does this even
make sense???
llvm-svn: 84840
|
|
|
|
|
|
|
|
|
| |
Analysis/ConstantFolding.cpp. This doesn't change the behavior of
instcombine but makes other clients of ConstantFoldInstruction
able to handle loads. This was partially extracted from Eli's patch
in PR3152.
llvm-svn: 84836
|
|
|
|
| |
llvm-svn: 84810
|
|
|
|
|
|
| |
patches for fixes like this instead of committing them directly.
llvm-svn: 84799
|
|
|
|
|
|
|
| |
Most changes are cleanup, but there is 1 correctness fix:
I fixed InstCombine so that the icmp is removed only if the malloc call is removed (which requires explicit removal because the Worklist won't DCE any calls since they can have side-effects).
llvm-svn: 84772
|
|
|
|
|
|
|
| |
in the PHI's Basic Block. This uses a conservative approach, because we don't
have dominator info in instcombine.
llvm-svn: 84754
|
|
|
|
| |
llvm-svn: 84299
|
|
|
|
|
|
|
|
| |
don't bother every time going around the main worklist. This speeds up a
release-asserts opt -std-compile-opts on 403.gcc by about 4% (1.5s). It
seems to speed up the most expensive instances of instcombine by ~10%.
llvm-svn: 84171
|
|
|
|
|
|
|
|
|
| |
instruction (which disqualifies stores, unreachable, etc) and at least the
first operand is a constant. This filters out a lot of obvious cases that
can't be folded. Also, switch the IRBuilder to a TargetFolder, which tries
harder.
llvm-svn: 84170
|
|
|
|
| |
llvm-svn: 84118
|
|
|
|
|
|
| |
presence of PHI nodes.
llvm-svn: 84103
|
|
|
|
| |
llvm-svn: 84049
|
|
|
|
|
|
| |
ValueHandles a chance to get properly updated.
llvm-svn: 84033
|
|
|
|
| |
llvm-svn: 83870
|
|
|
|
|
|
|
|
|
|
|
| |
it to visit instructions from the start of the function to the
end of the function in the first path. This greatly speeds up
some pathological cases (e.g. PR5150).
Try #3, this time with some unneeded debug info stuff removed
which was causing dead pointers to be added to the worklist.
llvm-svn: 83818
|