| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
of loops.
llvm-svn: 97642
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
long test(long x) { return (x & 123124) | 3; }
Currently compiles to:
_test:
orl $3, %edi
movq %rdi, %rax
andq $123127, %rax
ret
This is because instruction and DAG combiners canonicalize
(or (and x, C), D) -> (and (or, D), (C | D))
However, this is only profitable if (C & D) != 0. It gets in the way of the
3-addressification because the input bits are known to be zero.
llvm-svn: 97616
|
|
|
|
|
|
|
| |
emitted after the increment. Make sure the insert position
reflects this. This fixes PR6453.
llvm-svn: 97537
|
|
|
|
|
|
| |
respectively.
llvm-svn: 97531
|
|
|
|
|
|
| |
a loop and is itself the only dependency).
llvm-svn: 97526
|
|
|
|
|
|
|
|
| |
predecessors before returning. Otherwise, if multiple predecessor edges need
splitting, we only get one of them per iteration. This makes a small but
measurable compile time improvement with -enable-full-load-pre.
llvm-svn: 97521
|
|
|
|
| |
llvm-svn: 97512
|
|
|
|
| |
llvm-svn: 97458
|
|
|
|
| |
llvm-svn: 97453
|
|
|
|
| |
llvm-svn: 97448
|
|
|
|
| |
llvm-svn: 97366
|
|
|
|
| |
llvm-svn: 97313
|
|
|
|
|
|
| |
of a subtle interation in a loop operating in densemap order.
llvm-svn: 97288
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
confusing the old MAT variable with the new GlobalType one. This caused
us to promote the @disp global pointer into:
@disp.body = internal global double*** undef
instead of:
@disp.body = internal global [3 x double**] undef
llvm-svn: 97285
|
|
|
|
| |
llvm-svn: 97283
|
|
|
|
|
|
| |
argument of createGVNPass and set it automatically for -O3.
llvm-svn: 97245
|
|
|
|
| |
llvm-svn: 97235
|
|
|
|
| |
llvm-svn: 97231
|
|
|
|
|
|
| |
introduced when mallocinst was eliminated.
llvm-svn: 97178
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|