| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
| |
which branch on undef to branch on a boolean constant for the edge
exiting the loop. This helps ScalarEvolution compute trip counts for
loops.
Teach ScalarEvolution to recognize single-value PHIs, when safe, and
ForgetSymbolicName to forget such single-value PHI nodes as apprpriate
in ForgetSymbolicName.
llvm-svn: 97126
|
| |
|
|
| |
llvm-svn: 97121
|
| |
|
|
| |
llvm-svn: 97120
|
| |
|
|
| |
llvm-svn: 97036
|
| |
|
|
|
|
| |
the DominatorTree. ...", in hopes of restoring poor old PPC bootstrap.
llvm-svn: 97027
|
| |
|
|
| |
llvm-svn: 97024
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
argument is non-null, pass it along to PHITranslateSubExpr so that it can
prefer using existing values that dominate the PredBB, instead of just
blindly picking the first equivalent value that it finds on a uselist.
Also when the DominatorTree is specified, have PHITranslateValue filter
out any result that does not dominate the PredBB. This is basically just
refactoring the check that used to be in GetAvailablePHITranslatedSubExpr
and also in GVN.
Despite my initial expectations, this change does not affect the results
of GVN for any testcases that I could find, but it should help compile time.
Before this change, if PHITranslateSubExpr picked a value that does not
dominate, PHITranslateWithInsertion would then insert a new value, which GVN
would later determine to be redundant and would replace. By picking a good
value to begin with, we save GVN the extra work of inserting and then
replacing a new value.
llvm-svn: 97010
|
| |
|
|
|
|
|
|
| |
handle NaN properly.
Do (X une Y) ? X : Y -> X if one of X and Y is not zero.
llvm-svn: 96955
|
| |
|
|
|
|
| |
I don't have a small testcase for this.
llvm-svn: 96890
|
| |
|
|
|
|
| |
with large offset. When instcombine objsize checking transformation sees these geps where the offset seemingly point out of bound, it should just return "i don't know" rather than asserting.
llvm-svn: 96825
|
| |
|
|
|
|
| |
failures from ValueTable::verifyRemoved() when using -debug.
llvm-svn: 96805
|
| |
|
|
| |
llvm-svn: 96780
|
| |
|
|
|
|
|
|
|
| |
induction variable value and a loop-variant value, don't force the
insert position to be at the post-increment position, because it may
not be dominated by the loop-variant value. This fixes a
use-before-def problem noticed on PPC.
llvm-svn: 96774
|
| |
|
|
| |
llvm-svn: 96771
|
| |
|
|
|
|
| |
the division would have a remainder.
llvm-svn: 96693
|
| |
|
|
|
|
| |
scaled reuse.
llvm-svn: 96692
|
| |
|
|
|
|
| |
to be spurious
llvm-svn: 96662
|
| |
|
|
| |
llvm-svn: 96653
|
| |
|
|
|
|
|
|
| |
strides in foreign loops. This helps locate reuse opportunities
with existing induction variables in foreign loops and reduces
the need for inserting new ones. This fixes rdar://7657764.
llvm-svn: 96629
|
| |
|
|
|
|
|
|
| |
a loop exit value, so that if a loop gets deleted, ScalarEvolution
isn't stick holding on to dangling SCEVAddRecExprs for that loop. This
fixes PR6339.
llvm-svn: 96626
|
| |
|
|
| |
llvm-svn: 96614
|
| |
|
|
| |
llvm-svn: 96429
|
| |
|
|
|
|
| |
have overflowed.
llvm-svn: 96428
|
| |
|
|
| |
llvm-svn: 96387
|
| |
|
|
| |
llvm-svn: 96382
|
| |
|
|
| |
llvm-svn: 96378
|
| |
|
|
|
|
| |
terminator's list of successors.
llvm-svn: 96377
|
| |
|
|
| |
llvm-svn: 96372
|
| |
|
|
|
|
|
| |
and T->isPointerTy(). Convert most instances of the first form to the second form.
Requested by Chris.
llvm-svn: 96344
|
| |
|
|
|
|
|
| |
as it also peeks at which registers are being used by other uses. This
makes LSR less sensitive to use-list order.
llvm-svn: 96308
|
| |
|
|
|
|
| |
called by jump threading.
llvm-svn: 96263
|
| |
|
|
|
|
| |
isInteger, we now have isFloatTy and isIntegerTy. Requested by Chris!
llvm-svn: 96223
|
| |
|
|
| |
llvm-svn: 96179
|
| |
|
|
| |
llvm-svn: 96178
|
| |
|
|
|
|
|
|
|
|
| |
with multiplication by constants distributed through, occasionally
those subexpressions can include both x and -x. For now, if this
condition is discovered within LSR, just prune such cases away,
as they won't be profitable. This fixes a "zero allocated in a
base register" assertion failure.
llvm-svn: 96177
|
| |
|
|
|
|
|
| |
the no-TLI case. But it should still default to declining the
transformation.
llvm-svn: 96152
|
| |
|
|
|
|
| |
because profitability can't be sufficiently approximated.
llvm-svn: 96148
|
| |
|
|
|
|
| |
from opt.
llvm-svn: 96135
|
| |
|
|
|
|
|
| |
odd offsets since the bitcasted pointer size and the offset pointer
size are going to be different types for the GEP vs base object.
llvm-svn: 96134
|
| |
|
|
| |
llvm-svn: 96109
|
| |
|
|
|
|
|
|
|
|
|
|
| |
and add a doxygen comment.
Cache the phi entry to avoid doing tons of
PHINode::getBasicBlockIndex calls in the common case.
On my insane testcase from re2c, this speeds up CGP from
617.4s to 7.9s (78x).
llvm-svn: 96083
|
| |
|
|
| |
llvm-svn: 96081
|
| |
|
|
|
|
|
|
| |
to a PHI, avoid it in the common case where the BB occurs
in the same index for multiple phis. This speeds up CGP on
an insane testcase from 8.35 to 3.58s.
llvm-svn: 96080
|
| |
|
|
|
|
| |
using pred_begin/end. It is much faster.
llvm-svn: 96079
|
| |
|
|
|
|
| |
instead of with pred_begin/end.
llvm-svn: 96078
|
| |
|
|
|
|
| |
deterministically sorted.
llvm-svn: 96071
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Functions explicitly marked inline will get an inlining threshold slightly
more aggressive than the default for -O3. This means than -O3 builds are
mostly unaffected while -Os builds will be a bit bigger and faster.
The difference depends entirely on how many 'inline's are sprinkled on the
source.
In the CINT2006 suite, only these tests are significantly affected under -Os:
Size Time
471.omnetpp +1.63% -1.85%
473.astar +4.01% -6.02%
483.xalancbmk +4.60% 0.00%
Note that 483.xalancbmk runs too quickly to give useful timing results.
llvm-svn: 96066
|
| |
|
|
| |
llvm-svn: 96005
|
| |
|
|
|
|
| |
offset distributions it doesn't expect.
llvm-svn: 96002
|
| |
|
|
|
|
|
|
|
| |
2. don't bother trying to merge globals in non-default sections,
doing so is quite dubious at best anyway.
3. fix a bug reported by Arnaud de Grandmaison where we'd try to
merge two globals in different address spaces.
llvm-svn: 95995
|