Dan Gohman
52f5563973
Non-affine post-inc SCEV expansions have more code which must be
...
emitted after the increment. Make sure the insert position
reflects this. This fixes PR6453.
llvm-svn: 97537
2010-03-02 01:59:21 +00:00
Dan Gohman
6f34abd092
Floating-point add, sub, and mul are now spelled fadd, fsub, and fmul,
...
respectively.
llvm-svn: 97531
2010-03-02 01:11:08 +00:00
Bob Wilson
0fd415820b
Don't attempt load PRE when there is no real redundancy (i.e., the load is in
...
a loop and is itself the only dependency).
llvm-svn: 97526
2010-03-02 00:09:29 +00:00
Bob Wilson
892432b7ef
When GVN needs to split critical edges for load PRE, check all of the
...
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
2010-03-01 23:37:32 +00:00
Evan Cheng
7263cf8431
MemoryDepAnalysis is not used if redundant load processing is disabled.
...
llvm-svn: 97512
2010-03-01 22:23:12 +00:00
Dan Gohman
39917c7c81
Add some debug output to LoopSimplify.
...
llvm-svn: 97458
2010-03-01 17:55:27 +00:00
Dan Gohman
8b0a419eb1
Spelling fixes.
...
llvm-svn: 97453
2010-03-01 17:49:51 +00:00
Dan Gohman
0c39a35457
Prune #includes.
...
llvm-svn: 97448
2010-03-01 17:42:17 +00:00
Bob Wilson
1136166ee9
Revert r97245 which seems to be causing performance problems.
...
llvm-svn: 97366
2010-02-28 05:34:05 +00:00
Chris Lattner
2af7e3dceb
fix grammaro's pointed out by daniel
...
llvm-svn: 97313
2010-02-27 07:50:40 +00:00
Chris Lattner
d887f1da73
fix PR6414, a nondeterminism issue in IPSCCP which was because
...
of a subtle interation in a loop operating in densemap order.
llvm-svn: 97288
2010-02-27 00:07:42 +00:00
Chris Lattner
65d3a0a5f8
Fix rdar://7694996 a miscompile of 183.equake from my patch yesterday,
...
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
2010-02-26 23:42:13 +00:00
Chris Lattner
da5fcdace0
remove dead code, by this point all uses of CI are gone.
...
llvm-svn: 97283
2010-02-26 23:35:25 +00:00
Bob Wilson
ed1b0c31a7
Move the EnableFullLoadPRE flag from a separate command-line option to an
...
argument of createGVNPass and set it automatically for -O3.
llvm-svn: 97245
2010-02-26 19:09:47 +00:00
Bob Wilson
d4655991c3
Remove unused "NoPRE" parameter in GVN and createGVNPass().
...
llvm-svn: 97235
2010-02-26 18:35:19 +00:00
Chris Lattner
0521c09d97
fix PR6435 another bug from the MallocInst elimination work.
...
llvm-svn: 97231
2010-02-26 18:23:13 +00:00
Chris Lattner
7939f795f5
rewrite OptimizeGlobalAddressOfMalloc to fix PR6422, some bugs
...
introduced when mallocinst was eliminated.
llvm-svn: 97178
2010-02-25 22:33:52 +00:00
Dan Gohman
a9c205cc88
Make LoopSimplify change conditional branches in loop exiting blocks
...
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
2010-02-25 06:57:05 +00:00
Nick Lewycky
614fb949b9
Modernize comment.
...
llvm-svn: 97121
2010-02-25 06:39:10 +00:00
Nick Lewycky
dc835c4361
Correct whitespace.
...
llvm-svn: 97120
2010-02-25 06:38:51 +00:00
Daniel Dunbar
693ea89214
Reapply r97010, the speculative revert failed.
...
llvm-svn: 97036
2010-02-24 08:48:04 +00:00
Daniel Dunbar
0a2031e5b6
Speculatively revert r97010, "Add an argument to PHITranslateValue to specify
...
the DominatorTree. ...", in hopes of restoring poor old PPC bootstrap.
llvm-svn: 97027
2010-02-24 06:55:22 +00:00
Dan Gohman
94732024eb
Fix indentation.
...
llvm-svn: 97024
2010-02-24 06:46:09 +00:00
Bob Wilson
66e58ac742
Add an argument to PHITranslateValue to specify the DominatorTree. If this
...
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
2010-02-24 01:39:00 +00:00
Dan Gohman
cd4c03e886
Don't do (X != Y) ? X : Y -> X for floating-point values; it doesn't
...
handle NaN properly.
Do (X une Y) ? X : Y -> X if one of X and Y is not zero.
llvm-svn: 96955
2010-02-23 17:17:57 +00:00
Bob Wilson
923261bbe9
Update memdep when load PRE inserts a new load, and add some debug output.
...
I don't have a small testcase for this.
llvm-svn: 96890
2010-02-23 05:55:00 +00:00
Evan Cheng
3688b8fa68
Instcombine constant folding can normalize gep with negative index to index 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
2010-02-22 23:34:00 +00:00
Bob Wilson
1da9041913
Erase deleted instructions from GVN's ValueTable. This fixes assertion
...
failures from ValueTable::verifyRemoved() when using -debug.
llvm-svn: 96805
2010-02-22 21:39:41 +00:00
Dan Gohman
8c16b38262
Remove unused variables and parameters.
...
llvm-svn: 96780
2010-02-22 04:11:59 +00:00
Dan Gohman
4506fcb3c2
When emitting an instruction which depends on both a post-incremented
...
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
2010-02-22 03:59:54 +00:00
Dan Gohman
740909be2d
This cast<Instruction> is unnecessary.
...
llvm-svn: 96771
2010-02-22 02:07:36 +00:00
Dan Gohman
4eebb94094
Rename getSDiv to getExactSDiv to reflect its behavior in cases where
...
the division would have a remainder.
llvm-svn: 96693
2010-02-19 19:35:48 +00:00
Dan Gohman
85af256779
Check for overflow when scaling up an add or an addrec for
...
scaled reuse.
llvm-svn: 96692
2010-02-19 19:32:49 +00:00
Dale Johannesen
1d6827adef
recommit 96626, evidence that it broke things appears
...
to be spurious
llvm-svn: 96662
2010-02-19 07:14:22 +00:00
Dale Johannesen
1f790c28d0
Revert 96626, which causes build failure on ppc Darwin.
...
llvm-svn: 96653
2010-02-19 01:54:37 +00:00
Dan Gohman
2446f57503
When determining the set of interesting reuse factors, consider
...
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
2010-02-19 00:05:23 +00:00
Dan Gohman
60b3326435
Indvars needs to explicitly notify ScalarEvolution when it is replacing
...
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
2010-02-18 23:26:33 +00:00
Dan Gohman
c43d264cc0
Hoist this loop-invariant logic out of the loop.
...
llvm-svn: 96614
2010-02-18 21:34:02 +00:00
Dan Gohman
13ac3b2139
Delete some unneeded casts.
...
llvm-svn: 96429
2010-02-17 00:42:19 +00:00
Dan Gohman
5f10d6c52c
Don't attempt to divide INT_MIN by -1; consider such cases to
...
have overflowed.
llvm-svn: 96428
2010-02-17 00:41:53 +00:00
Bob Wilson
aff96b2132
Rename SuccessorNumber to GetSuccessorNumber.
...
llvm-svn: 96387
2010-02-16 21:06:42 +00:00
Dan Gohman
6deab96c81
Refactor rewriting for PHI nodes into a separate function.
...
llvm-svn: 96382
2010-02-16 20:25:07 +00:00
Bob Wilson
92cdb6eec5
Split critical edges as needed for load PRE.
...
llvm-svn: 96378
2010-02-16 19:51:59 +00:00
Bob Wilson
3de492ec35
Refactor to share code to find the position of a basic block successor in the
...
terminator's list of successors.
llvm-svn: 96377
2010-02-16 19:49:17 +00:00
Dan Gohman
0849ed5e26
Fix whitespace.
...
llvm-svn: 96372
2010-02-16 19:42:34 +00:00
Duncan Sands
19d0b47b1f
There are two ways of checking for a given type, for example isa<PointerType>(T)
...
and T->isPointerTy(). Convert most instances of the first form to the second form.
Requested by Chris.
llvm-svn: 96344
2010-02-16 11:11:14 +00:00
Dan Gohman
521efe68ab
Split the main for-each-use loop again, this time for GenerateTruncates,
...
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
2010-02-16 01:42:53 +00:00
Chris Lattner
6fbfe5897c
fix PR6305 by handling BlockAddress in a helper function
...
called by jump threading.
llvm-svn: 96263
2010-02-15 20:47:49 +00:00
Duncan Sands
9dff9bec31
Uniformize the names of type predicates: rather than having isFloatTy and
...
isInteger, we now have isFloatTy and isIntegerTy. Requested by Chris!
llvm-svn: 96223
2010-02-15 16:12:20 +00:00
Dan Gohman
e4e51a63da
Fix whitespace.
...
llvm-svn: 96179
2010-02-14 18:51:39 +00:00